2012-01-05 16 views
10

He guardado los datos usando punto y coma.Encontrar claves usando comodines

redis> keys party:* 

1) "party:congress:president" 
2) "party:bjp:president" 
3) "party:bjp" 
4) "party:sena" 

¿Hay algún comando que enumerará todas las partes? En el caso del ejemplo anterior, espero

congress 
bjp 
sena 
+1

que tiene que mantener una lista separada para eso, no es caro –

Respuesta

18

No, no hay ningún comando para hacer eso. Pero sería trivial implementarlo en el lado del cliente, si realmente tiene que hacerlo.

Las aplicaciones nunca deben usar los comandos KEYS para recuperar datos. KEYS bloquea toda la instancia de Redis mientras analiza linealmente los millones de claves que ha almacenado. Es más un comando de depuración que se supone que se usará en las herramientas de administración.

Con Redis, no hay una estructura árbolB para indexar las llaves, por lo que no puede preguntar para llaves, excepto si sus claves se almacenan en una colección existente (juego, zConfigurar, etc ...)

+0

Vi en [esta respuesta] (http://stackoverflow.com/a/30490869/1041046) que es posible buscar por clave parcial. Como estoy aprendiendo sobre redis, no estoy seguro de cuán exacto es. Creo que es posible que deba actualizar su respuesta para incluir más detalles. – AaA

+0

Es posible buscar por clave parcial, no es posible buscar eficientemente por clave parcial, excepto si crea explícitamente una estructura de datos para esto. Además, la pregunta original aquí no es sobre la búsqueda, sino sobre la manipulación del resultado (lo que se hace mejor en el lado del cliente). –

+0

Buen punto, estaba buscando búsqueda parcial en claves y este fue el segundo resultado en google. – AaA

1

pienso si desea obtener los datos de las "partes" de redis, cada vez que guarde sus datos comunes también guardará el nombre de la parte en la lista de las partes, luego puede obtenerlo fácilmente

4

Puede usar el comando ESCANEAR en redis para buscar claves sin bloquear toda la base de datos.

redis SCAN docs

Este comando tiene un filtro PARTIDO opcional que funciona como el filtro en el comando CLAVES.

redis> SCAN 0 MATCH party:* 

1) <the cursor> 
2) 1) "party:congress:president" 
    2) "party:bjp:president" 
    3) "party:bjp" 
    4) "party:sena" 

seguir llamando hasta que el cursor vuelve de nuevo a 0 para obtener todas las partes (podría no llegar a todas las partes si están siendo insertados mientras está escaneando)

disponibles desde 2,8

Cuestiones relacionadas