проверить ключи, которые установлены без истечения срока действия в aws redis - PullRequest
0 голосов
/ 11 января 2020

Мы можем получить срок действия одного ключа в Redis (aws elasti c служба кэширования), используя команду TTL. Аналогичным образом можно найти все ключи, которые установлены без истечения срока действия с определенного периода времени (например, с декабря).

Версия двигателя Redis: 2.8.21

1 Ответ

3 голосов
/ 12 января 2020

Redis не хранит время создания ключа. Если вы хотите, вы можете сохранить отдельную структуру данных для хранения этой информации.

Например, вы можете использовать ha sh, который сопоставляет каждый ключ времени его создания (или последнего обновления). Это эффективно для хранения, но если вы хотите найти последние 2000 ключей, которые были созданы, то это, вероятно, не лучшее решение. Но есть решение!

Вы можете использовать отсортированные наборы Redis для своих целей. Для каждого создаваемого вами ключа также добавьте этот ключ в отсортированный набор, используя текущую временную метку в качестве оценки:

ZADD <set_name> <timestamp> <key>

Позже, если вы хотите найти последние 2000 ключей, вы можете запросить отсортированный набор с помощью

ZRANGE <set_name> -2000 -1 WITHSCORES

Это даст вам то, чего вы хотите достичь (если я правильно понимаю), но у него есть цена. Каждая вставка в отсортированный набор имеет временную сложность O (log (N)).
Кроме того, вы можете рассмотреть возможность выполнения двух операций (добавление значения ключа + добавление ключа в набор) atomi c , который включает в себя написание короткого Lua сценария и использование его для установки значений, но я думаю, что это выходит за рамки этого вопроса.

...