query - ¿Comando redis para obtener todas las claves disponibles?
redis show all keys and values (9)
-> Obtener todas las claves de redis-cli
-redis 127.0.0.1:6379> keys *
-> Obtener lista de patrones
-redis 127.0.0.1:6379> keys d??
Esto producirá claves que comienzan por ''d'' con tres caracteres.
-redis 127.0.0.1:6379> keys *t*
Esto obtendrá claves con el carácter ''t'' de las coincidencias.
-> Contar claves desde la línea de comando por
-redis-cli keys * |wc -l
-> O puedes usar dbsize
-redis-cli dbsize
¿Hay un comando Redis para recuperar todas las claves en la base de datos? He visto algunas bibliotecas de python-redis buscándolas. Pero me preguntaba si es posible desde redis-client.
Echa un vistazo a la siguiente hoja de trucos de Redis . Para obtener un subconjunto de claves redis con el redis-cli, use el comando
KEYS "prefix:*"
Para obtener todas las claves disponibles en el servidor de redis, debe abrir redis-cli y escribir: KEYS *
Para obtener más ayuda, visite esta página: Este enlace
Puede suceder que al usar redis-cli, se conecte a su servidor redis remoto, y luego el comando:
KEYS *
No está mostrando 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, es posible que su redis-cli no se conecte a la instancia de la 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, el comando KEYS
no estaba recuperando resultados porque mi base de datos era 1. Para seleccionar la db que desea, use SELECT .
La db se identifica mediante un entero.
SELECT 1
KEYS *
Publico esta información porque ninguna de las respuestas anteriores resolvía mi problema.
Sí, puedes obtener todas las llaves usando este
var redis = require(''redis'');
redisClient = redis.createClient(redis.port, redis.host);
redisClient.keys(''*example*'', function (err, keys) {
})
SCAN no requiere que el cliente cargue todas las claves en la memoria como lo hace KEYS. SCAN te da un iterador que puedes usar. Tenía un registro de 1B en mi redis y nunca pude tener suficiente memoria para devolver todas las claves a la vez.
Aquí hay un fragmento de python para obtener todas las claves de la tienda que coinciden con un patrón y eliminarlas:
import redis
r = redis.StrictRedis(host=''localhost'', port=6379, db=0)
for key in r.scan_iter("key_pattern*"):
print key
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 lo atiende. Otro riesgo con KEYS
es que puede consumir (dependiendo del tamaño de su espacio de teclas) una gran cantidad de RAM para preparar el búfer de respuesta, lo que posiblemente agote la memoria de su servidor.
La versión 2.8 de Redis había introducido la familia de comandos SCAN que son mucho más educados y se pueden usar para el mismo propósito.
El CLI también proporciona una buena manera de trabajar con él:
$ redis-cli --scan --pattern ''*''
Intenta mirar el comando KEYS
. KEYS *
mostrará una lista de todas las claves almacenadas en redis.
EDITAR: tenga en cuenta la advertencia en la parte superior de la página de documentación de KEYS
:
Complejidad temporal: O (N) siendo N el número de claves en la base de datos, bajo el supuesto de que los nombres de clave en la base de datos y el patrón dado tienen una longitud limitada.
ACTUALIZACIÓN (V2.8 o superior): SCAN
es una alternativa superior a KEYS
, en el sentido de que no bloquea el servidor ni consume recursos significativos. Prefiero usarlo.
redis-cli -h <host> -p <port> keys *
donde * es el patrón para listar todas las teclas