dbsize()
возвращает общее количество ключей.
Вы можете быстро оценить количество ключей, соответствующих данному шаблону, выбрав ключи случайным образом, а затем проверив, какая их часть соответствует шаблону.
Пример на питоне; считая все ключи, начинающиеся с 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. Таким образом, если ваше приложение заинтересовано в общем количестве сопоставления ключей довольно часто, то каждый раз он будет все ближе и ближе к истинному значению.