2011-03-09 47 views

Respuesta

495

Intente ver el comando KEYS. KEYS * listará todas las claves almacenadas en redis.

EDIT: tenga en cuenta la advertencia en la parte superior de la página KEYS documentación:

complejidad Tiempo: O (N) donde N es el número de llaves en la base de datos, bajo el supuesto de que los nombres 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.

+28

CLI: ' redis-cli keys "*" ' –

+1

Compruebe otra respuesta de Itamar Haber para que 2.8 y versiones posteriores utilicen SCAN en su lugar https://stackoverflow.com/questions/5252099/redis-command-to-get-all-available-keys/ 23877883 # 23877883 – enator

97

Actualizado para la Redis 2,8 y por encima de

Como se señaló en los comentarios de las respuestas anteriores a esta pregunta, KEYS es un comando potencialmente peligroso, ya que su servidor Redis no estará disponible para realizar otras operaciones mientras se sirve la misma. Otro riesgo con 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, lo que posiblemente agote 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 se pueden usar para el mismo propósito.

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

$ redis-cli --scan --pattern '*' 
13

Tome un vistazo a continuación Redis Cheat Sheet. Para obtener un subconjunto de claves Redis con el Redis-cli i utilizar el comando

KEYS "prefix:*" 
17

Puede suceder que el uso de Redis-cli, se conecta a su remota Redis-servidor, y luego el comando:

KEYS * 

no aparece nada, o mejor, se nota:
(empty list or set)

Si está absolutamente seguro de que el servidor Redis que se utiliza es la que tiene los datos, entonces tal vez sus Redis-cl No me estoy conectando a la instancia de base de datos correcta de Redis.

Como se menciona en los documentos de Redis, las conexiones nuevas se conectan por defecto al db 0.

En mi caso el comando KEYS no estaba recuperando resultados porque mi base de datos era 1. Para seleccionar la base de datos que desea, use SELECT.
El db se identifica por un número entero.

SELECT 1 
KEYS * 

puedo enviar esta información porque ninguna de las respuestas anteriores estaba resolviendo mi problema.

6

Sí, puede obtener todas las claves mediante el uso de esta

var redis = require('redis'); 
redisClient = redis.createClient(redis.port, redis.host);  
    redisClient.keys('*example*', function (err, keys) { 
}) 
+2

No es exactamente lo que el OP estaba pidiendo (redis-cli), pero gracias para señalar esto sin embargo. – Herick

11

-> 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* 

Este wil obtener las claves por 'T' partidos personaje en clave

-> Contar teclas de línea de comandos

-redis-cli keys * |wc -l 

-> O puede utilizar dbsize

-redis-cli dbsize 
+0

Acabo de copiar las respuestas y lo intenté. Dio la "clave de comando desconocido" ". "clave" no es el comando, "claves" es. Corrija 'clave * t *' con 'teclas * t *'. –

+0

Gracias amigo por esa información. Fue mi error. Ahora estoy en el móvil. Voy a cambiar el comando eairlier. – denny

2

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 1B registros en mi redis y nunca pude obtener suficiente memoria para devolver todas las claves a la vez.

Aquí hay un fragmento de pitón para obtener todas las claves de la tienda coinciden con un patrón y eliminarlos:

import redis 
r = redis.StrictRedis(host='localhost', port=6379, db=0) 
for key in r.scan_iter("key_pattern*"): 
    print key 
1
redis-cli -h <host> -p <port> keys * 

donde * es el patrón para listar todas las claves de uso de ejemplo

+0

Tuve que citar la estrella, de la siguiente manera: 'redis-cli -h -p keys '*'' – aggregate1166877

Cuestiones relacionadas