检索/列出 Redis 数据库中的所有键/值对

Posted

技术标签:

【中文标题】检索/列出 Redis 数据库中的所有键/值对【英文标题】:Retrieving/Listing all key/value pairs in a Redis db 【发布时间】:2011-04-17 11:11:05 【问题描述】:

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

任何线索都会在很大程度上帮助我(我基本上被困在自动取款机上)。提前致谢!

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

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

感谢@antirez 和@hellvinz!

【问题讨论】:

【参考方案1】:

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

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

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

然后您可以使用TYPE 命令检查给定键的类型,如果是列表,您可以使用LRANGE mykey 0 -1 检索其中的元素。如果它是一个 Set 你将使用 SMEMBERS mykey 等等。查看 Redis 文档以获取所有可用命令的列表以及它们的工作原理。

【讨论】:

【参考方案2】:

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

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

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

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

【讨论】:

如果你有旧的 Redis 版本,也可以使用 GET 命令。如果您有很多键,那么您可以将 xargs 命令与 -P 并行化。示例:redis-cli KEYS * |xargs -n 1 -P8 redis-cli get Yours 是我遇到的第一个答案,它告诉我我必须在命令行上将 * 转义为 \* .... 必须为“错误数量的参数”浪费了大约 20 分钟在我发现这个之前,它在客户端中运行良好的 redis 命令。谢谢。 这行得通,但是必须为每个键运行redis-cli,它会非常慢。【参考方案3】:

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

【讨论】:

【参考方案4】:

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

redis-cli bgsave

【讨论】:

文章中链接的站点的证书无效,但该命令正是我想要的。 链接已损坏:( 404 Not Found

以上是关于检索/列出 Redis 数据库中的所有键/值对的主要内容,如果未能解决你的问题,请参考以下文章

Redis命令

redis基本命令

Redis--01

Redis数据库

Redis数据库

redis概念及安装部署