web-dev-qa-db-fra.com

Imprimer le nombre de clés dans Redis

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 *
134
andy boot

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.

173
hymloth

DBSIZE renvoie le nombre de clés et facilite son analyse.

Inconvénient: si une clé a expiré, elle peut toujours compter.

http://redis.io/commands/dbsize

141
seppo0010

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.

40
reptilicus

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

22

Pour obtenir le nombre total de clés, utilisez la commande ci-dessous:

127.0.0.1:6379> DBSIZE
20
Pankaj Chauhan

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

14
jingchao

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.

3
osa

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.

1
Jiankuan Xing