2010-09-26 5 views
61

J'utilise un ORM appelé Ohm dans Ruby qui fonctionne au-dessus de Redis et je suis curieux de savoir comment les données sont réellement stockées. Je me demandais s'il y avait moyen de lister toutes les clés/valeurs dans un Redis db.Déposer toutes les paires clé/valeur dans un Redis db

Tout plomb ira un long chemin en m'aidant (je suis coincé atm essentiellement). Merci d'avance!

Mise à jour:
Une note pour les autres d'essayer ceci à l'aide Redis-cli, utilisez ceci:

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

Merci @antirez et @hellvinz!

Répondre

110

Vous pouvez explorer l'ensemble de données Redis à l'aide de l'outil redis-cli inclus dans la distribution Redis.

Démarrez simplement l'outil sans arguments, puis tapez des commandes pour explorer l'ensemble de données.

Par exemple KEYS listera toutes les clés correspondant à un modèle de style glob, par exemple avec: keys * vous verrez toutes les clés disponibles.

Ensuite, vous pouvez utiliser la commande TYPE pour vérifier quel type est une clé donnée, si c'est une liste, vous pouvez récupérer les éléments à l'intérieur en utilisant LRANGE mykey 0 -1. Si c'est un ensemble que vous utiliserez à la place SMEMBERS mykey et ainsi de suite. Consultez la documentation de Redis pour une liste de toutes les commandes disponibles et comment elles fonctionnent.

+0

Merci. J'ai trouvé cela vraiment utile! –

+29

Ne réalisant pas à ce moment-là, je me sens humilié maintenant d'avoir reçu des conseils du Dieu de Redis lui-même! –

20

Tout en ajoutant un exemple rubis pratique à la réponse antirez (je n'oserais rivaliser avec lui)

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

Merci! C'est clair pour moi maintenant :) –

19

A partir de la ligne de commande, vous pouvez également utiliser la commande dump, disponible depuis Redis 2.6.0

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

(notez que cela fonctionne aussi avec la commande get pour les versions antérieures si vous ne me dérange pas)

+0

Ou utilisez la commande GET si vous avez une ancienne version de Redis. Et si vous avez beaucoup de clés, vous pouvez paralléliser la commande xargs avec -P. Exemple: 'redis-cli KEYS * | xargs -n 1 -P8 redis-cli get' –

+4

La vôtre est la première réponse que j'ai trouvée qui m'a informé que je devais échapper à * à \\ * sur la ligne de commande .... J'ai dû gaspiller environ 20 minutes avec "un mauvais nombre d'arguments" pour une commande redis qui fonctionne parfaitement bien chez le client jusqu'à ce que je trouve cela. Merci. –

+0

De rien. J'ai eu le même problème :-) –

2

Je suis arrivé ici becau Je cherchais comment sauvegarder toutes les clés/valeurs dans redis. Si cela s'applique à vous, consultez ce article.

Utiliser redis-cli bgsave

Questions connexes