有没有办法在Redis中打印键数?
我知道
keys *
但这似乎有点重 . - 鉴于Redis是一个关键的 Value 商店,也许这是唯一的方法 . 但我仍然希望看到类似的东西
count keys *
您可以发出INFO命令,该命令返回有关服务器的信息和统计信息 . 有关示例输出,请参见here .
正如mVChr的评论中所提到的,你可以直接在redis-cli上使用 info keyspace .
info keyspace
DBSIZE 返回键的数量,并且更容易解析 .
DBSIZE
缺点:如果密钥已过期,它可能仍然有效 .
http://redis.io/commands/dbsize
WARNING: 不要在 生产环境 计算机上运行它 .
在Linux机器上:
redis-cli KEYS "*" | wc -l
Note: 如下面的评论中所述,这是一个O(N)操作,因此对于具有许多键的大型DB,您不应该使用它 . 对于较小的部署,它应该没问题 .
使用 DBSIZE 这将不会给你任何关键
返回当前所选数据库中的键数 .
阅读更多http://redis.io/commands/dbsize
由于支持Redis 2.6,lua,你可以获得这样的通配符密钥数量
eval "return #redis.call('keys', 'prefix-*')" 0
见eval command
要获取计数键的总数,请使用以下命令:
127.0.0.1:6379> DBSIZE
dbsize() 返回键的总数 .
dbsize()
您可以通过随机抽样键快速估计与给定模式匹配的键数,然后检查它们中的哪一部分与模式匹配 .
python中的示例;计算以 prefix_ 开头的所有键:
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_ 相比却非常快 .
iter=100
keys prefix_
一个改进是在每个请求上抽样1000个密钥,但保留总计数,这样在两个请求之后你将除以2000,在三个请求之后你将除以3000.因此,如果你的应用程序对总数感兴趣经常匹配键,然后每次它越来越接近真实值 .
在Redis 2.6之后,INFO命令的结果按部分分割 . 在“键空间”部分,有“键”和“过期键”字段来说明有多少键 .
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
9 回答
您可以发出INFO命令,该命令返回有关服务器的信息和统计信息 . 有关示例输出,请参见here .
正如mVChr的评论中所提到的,你可以直接在redis-cli上使用
info keyspace
.DBSIZE
返回键的数量,并且更容易解析 .缺点:如果密钥已过期,它可能仍然有效 .
http://redis.io/commands/dbsize
WARNING: 不要在 生产环境 计算机上运行它 .
在Linux机器上:
Note: 如下面的评论中所述,这是一个O(N)操作,因此对于具有许多键的大型DB,您不应该使用它 . 对于较小的部署,它应该没问题 .
使用
DBSIZE
这将不会给你任何关键阅读更多http://redis.io/commands/dbsize
由于支持Redis 2.6,lua,你可以获得这样的通配符密钥数量
见eval command
要获取计数键的总数,请使用以下命令:
dbsize()
返回键的总数 .您可以通过随机抽样键快速估计与给定模式匹配的键数,然后检查它们中的哪一部分与模式匹配 .
python中的示例;计算以
prefix_
开头的所有键:即使
iter=100
在我的情况下给出了一个不错的估计,但与keys prefix_
相比却非常快 .一个改进是在每个请求上抽样1000个密钥,但保留总计数,这样在两个请求之后你将除以2000,在三个请求之后你将除以3000.因此,如果你的应用程序对总数感兴趣经常匹配键,然后每次它越来越接近真实值 .
在Redis 2.6之后,INFO命令的结果按部分分割 . 在“键空间”部分,有“键”和“过期键”字段来说明有多少键 .