Redis命令获取所有可用的密钥?

是否有一个Redis命令来获取数据库中的所有密钥? 我看到一些python-redis库提取它们。 但是想知道是否可以从redis客户端。

试着看看KEYS命令。 KEYS *将列出存储在redis中的所有密钥。

编辑:请注意在KEYS文档页面顶部的警告:

时间复杂度: O(N),其中N是数据库中密钥的数量,假设数据库中的密钥名称和给定模式的长度有限。

Redis 2.8及更高版本更新

正如以前对这个问题的回答中所指出的那样, KEYS是一个潜在的危险命令,因为你的Redis服务器在服务的时候将无法做其他的操作。 KEYS另一个风险是它可以消耗(取决于你的密钥空间的大小)大量的RAM来准备响应缓冲区,从而可能耗尽你的服务器的内存。

Redis的2.8版引入了更有礼貌的SCAN系列命令,可用于相同的目的。

CLI还提供了一个很好的方式来处理它:

 $ redis-cli --scan --pattern '*' 

看看下面的Redis备忘单 。 要使用redis-cli获得redis键的一个子集,我使用该命令

 KEYS "prefix:*" 

可能会发生这样的情况:使用redis-cli,连接到远程redis服务器,然后是命令:

 KEYS * 

没有显示任何东西,或更好,它显示:
(empty list or set)

如果您确定您使用的Redis服务器是您拥有该数据的服务器,那么您的redis-cli可能未连接到Redis正确的数据库实例。

正如在Redis文档中提到的那样,新的连接默认连接到db 0

在我的情况下, KEYS命令没有检索结果,因为我的数据库是1.为了select你想要的数据库,使用SELECT 。
数据库由一个整数标识。

 SELECT 1 KEYS * 

我发布这个信息,因为没有以前的答案解决我的问题。

– >从redis-cli获取所有密钥

 -redis 127.0.0.1:6379> keys * 

– >获取模式列表

 -redis 127.0.0.1:6379> keys d?? 

这将产生以“d”开始的具有三个字符的键。

 -redis 127.0.0.1:6379> keys *t* 

这将获得与钥匙'T'字符的钥匙

– >从命令行计数键

 -redis-cli keys * |wc -l 

– >或者你可以使用dbsize

 -redis-cli dbsize 

是的,你可以通过这个获得所有的钥匙

 var redis = require('redis'); redisClient = redis.createClient(redis.port, redis.host); redisClient.keys('*example*', function (err, keys) { }) 

扫描不需要客户端像KEYS一样将所有密钥加载到内存中。 扫描给你一个你可以使用的迭代器。 我在我的redis中有一个1Blogging,而且我无法获得足够的内存来一次返回所有的密钥。

这里是一个python代码片段,让商店中的所有关键字匹配一个模式并删除它们:

 import redis r = redis.StrictRedis(host='localhost', port=6379, db=0) for key in r.scan_iter("key_pattern*"): print key 
 redis-cli -h <host> -p <port> keys * 

其中*是列出所有密钥的模式