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


70

我正在使用在Redis上运行的Ruby中称为Ohm的ORM,并且很好奇地发现数据的实际存储方式。我想知道是否有办法列出Redis数据库中的所有键/值。

任何潜在的帮助都会大大帮助我(我基本上被困在atm上)。提前致谢!

更新:
为其他使用redis-cli进行尝试的人提供的注释请使用:

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

谢谢@antirez和@hellvinz!

Answers:


118

您可以使用redis-cliRedis分发中包含的工具浏览Redis数据集。

只需启动不带参数的工具,然后键入命令以浏览数据集。

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

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


28

在命令行中,您也可以使用dump命令,该命令自Redis 2.6.0起可用。

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

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


如果您的Redis版本较旧,则使用GET命令。而且,如果您有很多键,则可以将xargs命令与-P并行化。示例:redis-cli KEYS * |xargs -n 1 -P8 redis-cli get
Andy Triggs 2014年

8
您的答案是我遇到的第一个答案,它告诉我必须在命令行上将*改为\ * ....对于redis命令,它肯定已经浪费了大约20分钟的“错误数量的参数”,在redis命令中效果很好直到我找到这个客户。谢谢。
山姆·克里奇利

1
这将起作用,但是必须redis-cli为每个键运行一个,这将非常慢。
tokland

21

只是在antirez响应中添加一个实际的红宝石示例(我不敢与他竞争)

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

3

我到这里结束了,因为我一直在寻找如何备份Redis中的所有键/值。如果您喜欢这种方法,请查看本文

采用 redis-cli bgsave


文章中链接的站点证书无效,但是该命令正是我所要查找的。
mirzu
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.