2010-09-26 9 views
61

Estoy usando un ORM llamado Ohm en Ruby que funciona sobre Redis y tengo curiosidad por saber cómo se almacenan realmente los datos. Me preguntaba si hay una manera de listar todas las claves/valores en un redis db.Volcado de todos los pares clave/valor en un redis db

Cualquier ventaja contribuirá en gran medida a ayudarme (estoy básicamente atascado atm). ¡Gracias por adelantado!

Actualización:
Una nota para los demás probar esto usando Redis-CLI, utilice esto:

$ redis-cli keys 
* (press * followed by Ctrl-D) 
... (prints a list of keys and exits) 
$ 

Gracias @antirez y @hellvinz!

Respuesta

110

Puede explorar el conjunto de datos Redis utilizando la herramienta redis-cli incluida en la distribución de Redis.

Simplemente inicie la herramienta sin argumentos, luego escriba comandos para explorar el conjunto de datos.

Por ejemplo, KEYS mostrará una lista de todas las claves que coinciden con un patrón de estilo glob, por ejemplo con: keys * verá todas las claves disponibles.

Luego puede usar el comando TYPE para verificar qué tipo es una clave dada, si es una lista puede recuperar los elementos dentro usando LRANGE mykey 0 -1. Si es un conjunto, lo usarás en su lugar SMEMBERS mykey y así sucesivamente. Consulte la documentación de Redis para obtener una lista de todos los comandos disponibles y cómo funcionan.

+0

Thanks. ¡Me pareció realmente útil! –

+29

Sin darme cuenta en ese momento, ¡me siento honrado de haber recibido la guía del mismísimo Dios de Redis! –

20

Simplemente añadiendo un ejemplo práctico de rubí a la respuesta antirez (no me atreveré competir con él)

irb(main):002:0> require 'rubygems' 
=> true 
irb(main):003:0> require 'redis' 
=> true 
irb(main):004:0> r = Redis.new 
=> #<Redis:0x8605b64 @sock=#<TCPSocket:0x8605ab0>, @timeout=5, @port=6379, @db=0, @host="127.0.0.1"> 
irb(main):005:0> r.keys('*') 
+1

Gracias! Ahora lo tengo muy claro :) –

19

Desde la línea de comandos, también puede utilizar el comando dump, disponible desde Redis 2.6.0

redis-cli KEYS \* | xargs -n 1 redis-cli dump 

(tenga en cuenta que esto también funciona con el comando get para las versiones anteriores, si no le importa)

+0

O usa el comando GET si tienes una versión anterior de Redis. Y si tiene muchas teclas, puede paralelizar el comando xargs con -P. Ejemplo: 'redis-cli KEYS * | xargs -n 1 -P8 redis-cli get' –

+4

La tuya es la primera respuesta que encontré que me informó que tenía que escapar de * a \\ * en la línea de comandos .... debe haber desperdiciado unos 20 minutos con "número de argumentos incorrecto" para un comando redis que funciona perfectamente bien en el cliente hasta que encontré esto. Gracias. –

+0

De nada. Tuve el mismo problema :-) –

2

terminé aquí becau Se estaba buscando cómo hacer una copia de seguridad de todas las claves/valores en redis. Si esto se aplica a usted, consulte este article.

Use redis-cli bgsave

Cuestiones relacionadas