dbsize()
retorna o número total de chaves.
Você pode estimar rapidamente o número de chaves correspondentes a um determinado padrão, amostrando chaves aleatoriamente e depois verificando qual fração delas corresponde ao padrão.
Exemplo em python; contando todas as chaves começando com 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
Mesmo iter=100
dá uma estimativa decente no meu caso, ainda é muito rápido, em comparação com keys prefix_
.
Uma melhoria é obter uma amostra de 1000 chaves em cada solicitação, mas mantenha a contagem total, para que, após duas solicitações, você divida até 2000, após três solicitações, divida por 3000. Portanto, se seu aplicativo estiver interessado no número total de chaves correspondentes com bastante frequência, sempre que ele se aproximar cada vez mais do valor real.