Retrieving/Listing all key/value pairs in a Redis db
I'm using an ORM called Ohm in Ruby that works on top of Redis and am curious to find out how the data is actually s开发者_运维问答tored. I was wondering if there is way to list all the keys/values in a Redis db.
Update:
A note for others trying this out using redis-cli, use this:$ redis-cli keys
* (press * followed by Ctrl-D)
... (prints a list of keys and exits)
$
Thanks @antirez and @hellvinz!
You can explore the Redis dataset using the redis-cli
tool included in the Redis distribution.
Just start the tool without arguments, then type commands to explore the dataset.
For instance KEYS
will list all the keys matching a glob-style pattern, for instance with: keys *
you'll see all the keys available.
Then you can use the TYPE
command to check what type is a given key, if it's a list you can retrieve the elements inside using LRANGE mykey 0 -1
. If it is a Set you'll use instead SMEMBERS mykey
and so forth. Check the Redis documentation for a list of all the available commands and how they work.
From the command line, you can also use the dump command, available since Redis 2.6.0
redis-cli KEYS \* | xargs -n 1 redis-cli dump
(note that this also works with the get command for earlier versions if you don't mind)
UPDATE (V2.8 or greater): SCAN is a superior alternative to KEYS, in the sense that it does not block the server nor does it consume significant resources. Prefer using it.
Just adding a practical ruby example to the antirez response (I won't dare compete with him)
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('*')
I ended up here because I was looking for how to backup all key/values in redis. If this applies to you, this command might help:
redis-cli bgsave
精彩评论