В моей настройке команда info
показывает мне следующее:
[keys] => 1128
[expires] => 1125
Я бы хотел найти эти 3 ключа без даты истечения срока действия. Я уже проверил документы безрезультатно. Любые идеи?
В моей настройке команда info
показывает мне следующее:
[keys] => 1128
[expires] => 1125
Я бы хотел найти эти 3 ключа без даты истечения срока действия. Я уже проверил документы безрезультатно. Любые идеи?
Изменено с сайта, который я не могу найти сейчас.
redis-cli keys "*" | while read LINE ; do TTL='redis-cli ttl "$LINE"'; if [ $TTL -eq -1 ]; then echo "$LINE"; fi; done;
редактировать: обратите внимание, это блокирующий вызов.
Если кто-то получает плохие аргументы или ошибочное количество аргументов, поместите двойные кавычки вокруг $LINE.
Итак, это было бы
redis-cli keys "*" | while read LINE ; do TTL=`redis-cli ttl "$LINE"`; if [ $TTL -eq -1 ]; then echo "$LINE"; fi; done;
Это происходит, когда в ключе есть пробелы.
#!/usr/bin/env python
import argparse
import redis
p = argparse.ArgumentParser()
p.add_argument("-i", '--host', type=str, default="127.0.0.1", help="redis host", required=False)
p.add_argument("-p", '--port', type=int, default=6379, help="redis port", required=False)
p.add_argument("-n", '--db', type=int, default=0, help="redis database", required=False)
args = p.parse_args()
r = redis.Redis(host=args.host, port=args.port, db=args.db)
try:
keys = r.keys()
for key in keys:
if r.ttl(key) < 0:
print(key)
except KeyboardInterrupt:
pass
Ответ Уэйна Лю выполняется, но использует команду Redis KEYS, о которой Redis предупреждает:
Предупреждение: рассматривайте KEYS как команду, которую следует использовать только в производственных средах с особой осторожностью. Это может привести к снижению производительности при выполнении в больших базах данных.
Документация Redis рекомендует использовать SCAN.
redis-cli --scan --pattern "*" | while read LINE ; do TTL='redis-cli ttl "$LINE"'; if [ $TTL -eq -1 ]; then echo "$LINE"; fi; done;