72

我在 Ruby 中使用了一个名为 Ohm 的 ORM,它在 Redis 之上工作,我很想知道数据的实际存储方式。我想知道是否有办法列出 Redis 数据库中的所有键/值。

任何线索都可以帮助我解决问题(我基本上被困在自动取款机上)。提前致谢!

更新:
其他人使用 redis-cli 尝试这个的注释,使用这个:

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

感谢@antirez 和@hellvinz!

4

4 回答 4

119

redis-cli您可以使用Redis 发行版中包含的工具探索 Redis 数据集。

只需启动不带参数的工具,然后键入命令来探索数据集。

例如KEYS ,将列出与 glob 样式模式匹配的所有键,例如:keys *您将看到所有可用的键。

然后您可以使用该TYPE命令检查给定键的类型,如果是列表,您可以使用LRANGE mykey 0 -1. 如果它是一个 Set,你将使用它SMEMBERS mykey,依此类推。查看 Redis 文档以获取所有可用命令及其工作方式的列表。

于 2010-09-26T17:13:58.217 回答
31

从命令行,您还可以使用从 Redis 2.6.0 开始可用的dump命令

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

(请注意,如果您不介意,这也适用于早期版本的get命令)

更新(V2.8 或更高版本):SCAN是 KEYS 的更好替代方案,因为它不会阻塞服务器,也不会消耗大量资源。更喜欢使用它。

于 2013-07-12T09:53:26.837 回答
21

只是在 antirez 响应中添加一个实用的 ruby​​ 示例(我不敢与他竞争)

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('*')
于 2010-09-27T11:05:07.903 回答
3

我最终来到这里是因为我正在寻找如何备份 redis 中的所有键/值。如果这适用于您,此命令可能会有所帮助:

redis-cli bgsave
于 2015-06-25T15:21:03.780 回答