检索/列出 Redis db 中的所有键/值对

我在 Ruby 中使用一个名为 Ohm 的 ORM,它工作在 Redis 之上,我很好奇数据实际上是如何存储的。我想知道是否有方法可以列出 Redis db 中的所有键/值。

任何线索都会帮助我走出困境(我基本上卡在 ATM 机上了)。提前谢谢!

更新:
对于其他使用 redis-cli 尝试这种方法的人,请使用以下方法:

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

谢谢@antirez 和@hellvinz!

82323 次浏览

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

只需启动不带参数的工具,然后键入命令查看数据集即可。

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

然后可以使用 TYPE命令检查给定键的类型,如果它是一个列表,则可以使用 LRANGE mykey 0 -1检索其中的元素。如果它是一个集合,你将用 SMEMBERS mykey代替,以此类推。检查 Redis 文档,获取所有可用命令的列表以及它们的工作方式。

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

在命令行中,还可以使用自 Redis 2.6.0以来提供的 扔掉命令

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

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

更新(V2.8或更高版本) : 扫描是 KEYS 的优越替代品,因为它不会阻塞服务器,也不会消耗大量资源。我更喜欢用它。

我在这里结束,因为我正在寻找如何备份所有键/值在重排。如果这个命令适用于您,那么这个命令可能会有所帮助:

redis-cli bgsave