¿Comando Redis para obtener todas las claves disponibles?

Resuelto Lalith asked hace 13 años • 16 respuestas

¿Existe un comando de Redis para recuperar todas las claves de la base de datos? He visto algunas bibliotecas de python-redis buscándolos. Pero me preguntaba si es posible desde redis-client.

Lalith avatar Mar 10 '11 04:03 Lalith
Aceptado

Intenta mirar el KEYScomando. KEYS *enumerará todas las claves almacenadas en redis.

EDITAR: tenga en cuenta la advertencia en la parte superior de la KEYSpágina de documentación:

Complejidad del tiempo: O(N) siendo N el número de claves en la base de datos, bajo el supuesto de que los nombres de las claves en la base de datos y el patrón dado tienen una longitud limitada.

UPDATE (V2.8 o superior): SCAN es una alternativa superior a KEYS, en el sentido de que no bloquea el servidor ni consume recursos importantes. Prefiere usarlo.

yojimbo87 avatar Mar 09 '2011 21:03 yojimbo87

Actualizado para Redis 2.8 y superior

Como se señaló en los comentarios de respuestas anteriores a esta pregunta, KEYSes un comando potencialmente peligroso ya que su servidor Redis no estará disponible para realizar otras operaciones mientras esté funcionando. Otro riesgo KEYSes que puede consumir (dependiendo del tamaño de su espacio de claves) una gran cantidad de RAM para preparar el búfer de respuesta, agotando así posiblemente la memoria de su servidor.

La versión 2.8 de Redis introdujo la familia de comandos SCAN que son mucho más educados y pueden usarse para el mismo propósito.

La CLI también proporciona una buena manera de trabajar con él:

$ redis-cli --scan --pattern '*'
Itamar Haber avatar May 26 '2014 21:05 Itamar Haber

Puede suceder que usando redis-cli, te conectes a tu servidor redis remoto y luego el comando:

KEYS *

no muestra nada, o mejor, muestra:
(empty list or set)

Si está absolutamente seguro de que el servidor Redis que utiliza es el que tiene los datos, entonces tal vez su redis-cli no se esté conectando a la instancia de base de datos correcta de Redis.

Como se menciona en los documentos de Redis, las nuevas conexiones se conectan de forma predeterminada a la base de datos 0 .

En mi caso, KEYSel comando no recuperaba resultados porque mi base de datos era 1. Para seleccionar la base de datos que desea, use SELECT .
La base de datos se identifica mediante un número entero.

SELECT 1
KEYS *

Publico esta información porque ninguna de las respuestas anteriores resolvió mi problema.

Evhz avatar Apr 11 '2016 11:04 Evhz