Est-il possible d'imprimer le nombre de clés dans Redis?
Je suis conscient de
keys *
Mais cela semble un peu lourd. - Étant donné que Redis est un magasin de valeur clé, c’est peut-être la seule façon de le faire. Mais j'aimerais quand même voir quelque chose du genre
count keys *
Vous pouvez émettre la commande INFO, qui renvoie des informations et des statistiques sur le serveur. Voir ici pour un exemple de sortie.
Comme mentionné dans les commentaires de mVChr, vous pouvez utiliser info keyspace
directement sur le redis-cli.
DBSIZE
renvoie le nombre de clés et facilite son analyse.
Inconvénient: si une clé a expiré, elle peut toujours compter.
ATTENTION: N'exécutez pas ceci sur une machine de production.
Sur une machine Linux:
redis-cli KEYS "*" | wc -l
Remarque: Comme mentionné dans les commentaires ci-dessous, il s’agit d’une opération O(N); vous ne devez donc pas utiliser cette base de données volumineuse avec de nombreuses clés. Pour de plus petits déploiements, ça devrait aller.
utiliser DBSIZE
cela vous donnera pas de clé
Renvoie le nombre de clés dans la base de données actuellement sélectionnée.
pour en savoir plus http://redis.io/commands/dbsize
Pour obtenir le nombre total de clés, utilisez la commande ci-dessous:
127.0.0.1:6379> DBSIZE
Depuis Redis 2.6, lua est pris en charge, vous pouvez obtenir un nombre de clés génériques comme celui-ci.
eval "return #redis.call('keys', 'prefix-*')" 0
voir commande eval
dbsize()
renvoie le nombre total de touches.
Vous pouvez rapidement estimer le nombre de clés correspondant à un modèle donné en échantillonnant des clés au hasard, puis en vérifiant quelle fraction correspond au modèle.
Exemple en python; compter toutes les clés commençant par 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
Même iter=100
donne une estimation décente dans mon cas, mais est très rapide par rapport à keys prefix_
.
Une amélioration consiste à échantillonner 1000 clés à chaque demande, tout en conservant le nombre total. Ainsi, après deux demandes, vous diviserez par 2000, après trois demandes, vous diviserez par 3000. Ainsi, si votre application est intéressée par le nombre total de faire correspondre les clés assez souvent, puis à chaque fois il se rapprochera de la valeur réelle.
Après Redis 2.6, le résultat de la commande INFO est divisé en sections. Dans la section "keyspace", il y a des champs "keys" et "expired keys" pour indiquer le nombre de clés.