检索/列出 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 数据库中的所有键/值对的主要内容,如果未能解决你的问题,请参考以下文章