¿Comando Redis para obtener todas las claves disponibles?
¿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.
Intenta mirar el KEYS
comando. KEYS *
enumerará todas las claves almacenadas en redis.
EDITAR: tenga en cuenta la advertencia en la parte superior de la KEYS
pá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.
Actualizado para Redis 2.8 y superior
Como se señaló en los comentarios de respuestas anteriores a esta pregunta, KEYS
es un comando potencialmente peligroso ya que su servidor Redis no estará disponible para realizar otras operaciones mientras esté funcionando. Otro riesgo KEYS
es 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 '*'
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, KEYS
el 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.