2010-09-26 9 views
61

Ich benutze eine ORM namens Ohm in Ruby, die auf Redis funktioniert und bin gespannt, wie die Daten tatsächlich gespeichert werden. Ich habe mich gefragt, ob es eine Möglichkeit gibt, alle Schlüssel/Werte in einer Redis db aufzulisten.Dumping aller Schlüssel/Wert-Paare in einer Redis db

Irgendein Blei wird einen langen Weg helfen (Ich bin im Grunde atm stecken). Danke im Voraus!

Update:
Ein Hinweis für andere dies auszuprobieren redis-cli, verwenden Sie diese:

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

Dank @antirez und @hellvinz!

Antwort

110

Sie können den Redis-Datensatz mit dem in der Redis-Verteilung enthaltenen Werkzeug redis-cli untersuchen.

Starten Sie einfach das Werkzeug ohne Argumente und geben Sie dann Befehle ein, um das Dataset zu untersuchen.

Zum Beispiel KEYS listet alle Schlüssel auf, die zu einem Glob-Stil-Muster passen, zum Beispiel mit: keys * Sie sehen alle verfügbaren Schlüssel.

Dann können Sie mit dem Befehl TYPE prüfen, welcher Typ ein bestimmter Schlüssel ist. Wenn es sich um eine Liste handelt, können Sie die Elemente mit LRANGE mykey 0 -1 abrufen. Wenn es ein Set ist, verwenden Sie stattdessen SMEMBERS mykey und so weiter. In der Redis-Dokumentation finden Sie eine Liste aller verfügbaren Befehle und deren Funktionsweise.

+0

Danke. Das fand ich sehr hilfreich! –

+29

Da ich zu dieser Zeit nicht merke, fühle ich mich jetzt gedemütigt, vom Gott von Redis selbst die Führung erhalten zu haben! –

20

Hinzufügen nur ein praktisches Beispiel Rubin auf die antirez Antwort (ich will nicht mit ihm wagen zu konkurrieren)

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

Danke! Es ist mir jetzt klar :) –

19

in der Befehlszeile, können Sie auch den dump Befehl verwenden, da Redis verfügbar 2.6.0

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

(beachten Sie, dass dies auch mit dem get Befehl für frühere Versionen funktioniert, wenn es Ihnen nichts ausmacht)

+0

Oder verwenden Sie den GET-Befehl, wenn Sie eine ältere Redis-Version haben. Und wenn Sie viele Schlüssel haben, können Sie den Befehl xargs mit -P parallelisieren. Beispiel: 'redis-cli SCHLÜSSEL * | xargs -n 1 -P8 redis-cli get' –

+4

Dein ist die erste Antwort, auf die ich stieß, die mich informierte, dass ich dem * zu \\ * auf der Befehlszeile entkommen musste .... Ich muss ungefähr 20 Minuten mit "falscher Anzahl von Argumenten" für einen redis-Befehl verschwendet haben, der im Client einwandfrei funktioniert, bis ich das gefunden habe. Vielen Dank. –

+0

Gern geschehen. Ich hatte das gleiche Problem :-) –

2

ich hier gelandet becau se Ich suchte, wie man alle Schlüssel/Werte in redis sichert. Wenn dies für Sie gilt, lesen Sie diese article.

Verwenden Sie redis-cli bgsave