在Redis中有办法打印键的数量吗?
我知道
keys *
但这似乎有点沉重。考虑到Redis是一个键值存储,也许这是唯一的方法。但我还是希望看到一些类似于
count keys *
在Redis中有办法打印键的数量吗?
我知道
keys *
但这似乎有点沉重。考虑到Redis是一个键值存储,也许这是唯一的方法。但我还是希望看到一些类似于
count keys *
当前回答
DBSIZE返回键的数量,更容易解析。
缺点:如果一个密钥已经过期,它可能仍然有效。
http://redis.io/commands/dbsize
其他回答
在Redis 2.6版本中,INFO命令的结果被分段分割。在“keyspace”部分,有“keys”和“expired keys”字段来说明有多少个key。
警告:不要在生产机器上运行此程序。
Linux系统:
redis-cli KEYS "*" | wc -l
注意:正如下面的评论中提到的,这是一个O(N)操作,所以在一个有很多键的大数据库上,你不应该使用它。对于较小的部署,应该没问题。
因为Redis 2.6,支持lua,你可以得到这样的通配符键
eval "return #redis.call('keys', 'prefix-*')" 0
参见eval command
进入redis-cli,使用以下命令
info keyspace
它可能会帮助到某人
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