在Redis中有办法打印键的数量吗?
我知道
keys *
但这似乎有点沉重。考虑到Redis是一个键值存储,也许这是唯一的方法。但我还是希望看到一些类似于
count keys *
在Redis中有办法打印键的数量吗?
我知道
keys *
但这似乎有点沉重。考虑到Redis是一个键值存储,也许这是唯一的方法。但我还是希望看到一些类似于
count keys *
当前回答
因为Redis 2.6,支持lua,你可以得到这样的通配符键
eval "return #redis.call('keys', 'prefix-*')" 0
参见eval command
其他回答
进入redis-cli,使用以下命令
info keyspace
它可能会帮助到某人
因为Redis 2.6,支持lua,你可以得到这样的通配符键
eval "return #redis.call('keys', 'prefix-*')" 0
参见eval command
Dbsize()返回键的总数。
您可以通过随机抽样键来快速估计与给定模式匹配的键的数量,然后检查它们中有多少与模式匹配。
python中的示例;计数所有前缀_开头的键:
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。因此,如果应用程序经常对匹配键的总数感兴趣,那么每次它都会越来越接近真实值。
在Redis 2.6版本中,INFO命令的结果被分段分割。在“keyspace”部分,有“keys”和“expired keys”字段来说明有多少个key。
显示DB的名称和键数:
redis-cli info keyspace
# Keyspace
db0:keys=12995,expires=0,avg_ttl=0
db12:keys=5524396,expires=5,avg_ttl=45201
显示编号。所选数据库中的键:
redis-cli dbsize
(integer) 12995
显示整个Redis的统计数据:
redis-cli info