Except command SCAN
, the command KEYS pattern
can return the same result as your current command SCAN 0 COUNT 10000000 MATCH "{UID}*"
.
However, for your real needs to get the number of keys matching a pattern, there is an issue add COUNT command
from the Redis offical GitHub repo which had answered by the author antirez
for you, as the content below.
Hi, KEYS is only intended for debugging since it is O(N) and performs a full keyspace scan. COUNT has the same problem but without the excuse of being useful for debugging... (since you can simply use redis-cli keys ... | grep ...). So feature not accepted. Thanks for your interest.
So you can not directly get the count of KEYS pattern
, but there are some possible solutions for you.
Count the keys return from command KEYS pattern
in your programming language for the small number of keys with a pattern, like doing redis-cli KEYS "{UID}*" | wc -l
on the host server of Redis.
To use the command EVAL script numkeys key \[key ...\] arg \[arg ...\]
to run a Lua script to count the keys with pattern, there are two scripts you can try.
2.1. Script 1
return #redis.call("keys", "{UID}*")
2.2. Script 2
return table.getn(redis.call('keys', ARGV[1]))
The completed command in redis-cli
is EVAL "return table.getn(redis.call('keys', ARGV[1]))" 0 {UID}*