有没有办法在Redis中打印键数?
我知道
keys *
但这似乎有点重。 - 鉴于Redis是一个关键的价值商店,也许这是唯一的方法。但是,我仍然希望看到类似
的内容count keys *
答案 0 :(得分:168)
您可以发出INFO命令,该命令返回有关服务器的信息和统计信息。有关示例输出,请参阅here。
正如mVChr的评论所述,您可以直接在redis-cli上使用info keyspace
。
答案 1 :(得分:138)
答案 2 :(得分:39)
警告:请勿在生产计算机上运行此程序。
在Linux机上:
redis-cli KEYS "*" | wc -l
注意:如下面的评论中所述,这是一个O(N)操作,因此在具有许多键的大型数据库上,您不应该使用它。对于较小的部署,它应该没问题。
答案 3 :(得分:21)
答案 4 :(得分:17)
要获取计数键总数,请使用以下命令:
127.0.0.1:6379> DBSIZE
答案 5 :(得分:14)
答案 6 :(得分:3)
dbsize()
返回键的总数。
您可以通过随机抽样键快速估算与给定模式匹配的键数,然后检查它们中的哪一部分与模式匹配。
python中的示例;计算以prefix_
开头的所有密钥:
import redis
r = redis.StrictRedis(host = 'localhost', port=6379)
iter=1000
print 'Approximately', r.dbsize() * float(sum([r.randomkey().startswith('prefix_') for i in xrange(iter)])) / iter
即使iter=100
在我的情况下给出了不错的估计,但与keys prefix_
相比却非常快。
改进是在每个请求上抽样1000个密钥,但保留总计数,以便在两个请求之后你将除以2000,在三个请求之后你将除以3000.因此,如果你的应用程序经常对匹配键的总数感兴趣,然后每次它越来越接近真实值。
答案 7 :(得分:1)
在Redis 2.6之后,INFO命令的结果按部分分割。在“键空间”部分,有“键”和“过期键”字段来说明有多少键。
答案 8 :(得分:0)
转到redis-cli并使用以下命令
info keyspace
这可能会帮助某人
答案 9 :(得分:-1)
eval "local count = redis.call('scan', 0, 'match', 'key:*:key', 'count', 10000) if count ~= 0 then return #count[2] end " 0
eval "local count = redis.call('sscan', 'key.key:all', 0, 'match', '*', 'count', 1000000) if count ~= 0 then return #count[2] end " 0