Я хочу удалить все ключи старше 3 месяцев. Эти ключи не были установлены с датой истечения срока действия.Redis: Как удалить все ключи старше 3 месяцев
Или если это невозможно, могу ли я удалить, может быть, самые старые 1000 ключей?
Я хочу удалить все ключи старше 3 месяцев. Эти ключи не были установлены с датой истечения срока действия.Redis: Как удалить все ключи старше 3 месяцев
Или если это невозможно, могу ли я удалить, может быть, самые старые 1000 ключей?
Извините, это невозможно, как указано в комментариях выше. В Redis очень важно создавать свои собственные индексы для поддержки ваших шаблонов доступа.
Совет: Что вы должны сделать, это создать упорядоченный набор (ZADD
) со всеми новыми или измененными клавишами и установите счет на отметку времени. Таким образом, вы можете легко получить ключи в течение периода времени, используя ZRANGEBYSCORE
.
Если вы хотите истекли существующие ключи, get all keys (дорогой) и установить TTL для каждого, используя команду EXPIRE
.
Немного поздно, но проверьте команду OBJECT. Там вы найдете время простоя объекта (с разрешением 10 секунд). Он используется для целей отладки, но все же может быть хорошим решением для ваших нужд.
Ссылки: http://redis.io/commands/object
Есть ли способ выполнить эту команду из StackExchange.Redis.Extention Api? –
ARE YOU СЕЙЧАС используя истекают? Если это так, вы можете пропустить все ключи, если нет TTL, а затем добавить один.
Python Пример:
for key in redis.keys('*'):
if redis.ttl(key) == -1:
redis.expire(key, 60 * 60 * 24 * 7)
# This would clear them out in a week
EDIT Как @kouton отметил использование сканирования передачи ключей в производстве см дискуссию о том, что по адресу: SCAN vs KEYS performance in Redis
Никогда не используйте «ключи» в производстве; вместо этого используйте 'scan'. – kouton
К сожалению, это не возможно. Но вы можете удалить ключи Redis в соответствии с данными, связанными с ними. –
@LeonidBeschastny Спасибо. Это потому, что ключи не сохраняются отсортированным образом или сохранены с датой? – Christoffer
Невозможно получить время создания ключей, если вы не сохраните его самостоятельно в связанных с ним данных. Что касается самых старых ключей, Redis оптимизирован для быстрого доступа к ключам, поэтому он хранит свои данные в виде хеш-таблицы. –