2012-03-22 20 views

Respuesta

45

Modificado de un sitio que no puedo encontrar ahora.

redis-cli keys "*" | while read LINE ; do TTL=`redis-cli ttl "$LINE"`; if [ $TTL -eq -1 ]; then echo "$LINE"; fi; done; 
+7

TTL es '-1' para ninguna tecla de caducidad (en lugar de' 3600'). – Niloct

+1

Ese es un punto excelente, gracias por señalarlo. Editado la respuesta y votando tu comentario. –

+0

Aparece un error cuando pruebo esto en un host redis remoto. Me conecto al host remoto y luego desde el prompt que ejecuto: 'keys" * "| mientras lees LINE; hacer TTL = 'redis-cli ttl $ LINE'; if [$ TTL -eq -1]; luego echo "$ LINE"; fi; hecho; 'pero obtengo un error de" argumentos inválidos " – emersonthis

1

En caso de que alguien está recibiendo malos argumentos o número incorrecto de argumentos de error, poner comillas dobles $ LINE.

Por lo tanto, sería

redis-cli keys "*" | while read LINE ; do TTL=`redis-cli ttl "$LINE"`; if [ $TTL -eq -1 ]; then echo "$LINE"; fi; done; 

Esto sucede cuando hay espacios en la clave.

+0

Esto es una mejora (corrección de errores) sobre la respuesta existente y, como tal, debe ser una edición de esa respuesta. – AndrewF

Cuestiones relacionadas