Imprimer le nombre de clés dans Redis

Existe-t-il un moyen d'imprimer le nombre de clés dans Redis?

Je suis au courant 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 je voudrais toujours voir quelque chose dans le sens de

count keys *
113
demandé sur andy boot 2012-03-27 15:06:15

9 réponses

Vous pouvez lancer 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.

152
répondu hymloth 2018-02-28 08:05:56

DBSIZE renvoie le nombre de clés et il est plus facile à analyser.

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

Http://redis.io/commands/dbsize

119
répondu seppo0010 2015-08-28 18:05:33

Avertissement: Ne l'exécutez pas sur une machine de production.

Sur une boîte Linux:

redis-cli KEYS "*" | wc -l

Note: comme mentionné dans les commentaires ci-dessous, il s'agit D'une opération O(N), donc sur une grande base de données avec beaucoup de clés, vous ne devriez pas l'utiliser. Pour les petits déploiements, ça devrait aller.

38
répondu reptilicus 2018-03-10 14:13:26

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

19
répondu Saurabh Chandra Patel 2016-05-29 07:19:29

Depuis Redis 2.6, lua est pris en charge, vous pouvez obtenir le nombre de clés génériques comme ceci

eval "return #redis.call('keys', 'prefix-*')" 0

Voir commande eval

13
répondu jingchao 2013-08-15 07:17:18

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

127.0.0.1:6379> DBSIZE
8
répondu Pankaj Chauhan 2018-03-16 04:55:27

dbsize() renvoie le nombre total de clés.

Vous pouvez estimer rapidement le nombre de clés correspondant à un motif donné en échantillonnant des clés au hasard, puis en vérifiant quelle fraction d'entre elles correspond au motif.

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, comparé à keys prefix_.

Une amélioration consiste à échantillonner 1000 clés à chaque requête, mais à conserver le nombre total, de sorte qu'après deux demandes que vous diviserez par 2000, après trois demandes que vous diviserez par 3000. Ainsi, si votre application s'intéresse assez souvent au nombre total de clés correspondantes, elle se rapprochera de plus en plus de la valeur réelle.

3
répondu osa 2015-04-25 03:52:10

Après Redis 2.6, le résultat de la commande INFO est divisé par sections. Dans la section "keyspace", il y a des champs" clés "et" clés expirées " pour indiquer combien de clés sont là.

1
répondu Jiankuan Xing 2013-06-06 20:37:37
eval "local count = redis.call('scan', 0, 'match', 'key:*:key', 'count', 10000) if count ~= 0 then return #count[2] end " 0

eval "local count = redis.call('sscan', 'key.key:all', 0, 'match', '*', 'count', 1000000) if count ~= 0 then return #count[2] end " 0
-1
répondu Laoch Tan 2017-10-26 10:07:29