Retrieving/Listing all key/value pairs in a Redis db

RubyRubygemsNosqlRedisOhm

Ruby Problem Overview


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 stored. I was wondering if there is way to list all the keys/values in a Redis db.

Any lead will go a long way in helping me out (I'm basically stuck atm). Thanks in advance!

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!

Ruby Solutions


Solution 1 - Ruby

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.

Solution 2 - Ruby

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.

Solution 3 - Ruby

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('*')

Solution 4 - Ruby

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

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionJagtesh ChadhaView Question on Stackoverflow
Solution 1 - RubyantirezView Answer on Stackoverflow
Solution 2 - RubyN.MartignoleView Answer on Stackoverflow
Solution 3 - RubyhellvinzView Answer on Stackoverflow
Solution 4 - RubyhertView Answer on Stackoverflow