web-dev-qa-db-ja.com

Redisのキーの数を印刷する

Redisのキーの数を印刷する方法はありますか?

気がついた

keys *

しかし、それは少し重いようです。 -Redisがキーバリューストアであることを考えると、これが唯一の方法です。しかし、私はまだの線に沿って何かを見たいです

count keys *
131
andy boot

サーバーに関する情報と統計を返すINFOコマンドを発行できます。出力例については、 here を参照してください。

MVChrのコメントで述べたように、info keyspaceをredis-cliで直接使用できます。

168
hymloth

DBSIZEはキーの数を返し、解析しやすくなります。

欠点:キーの有効期限が切れた場合でもカウントされる可能性があります。

http://redis.io/commands/dbsize

139
seppo0010

警告:本番マシンでは実行しないでください。

Linuxボックスの場合:

redis-cli KEYS "*" | wc -l

注:以下のコメントで述べたように、これはO(N)操作であるため、多くのキーを持つ大規模なDBではこれを使用しないでください。小規模な展開では、問題ないはずです。

39
reptilicus

DBSIZEを使用します

現在選択されているデータベース内のキーの数を返します。

さらに読むには http://redis.io/commands/dbsize

21

キーのカウント総数を取得するには、以下のコマンドを使用します。

127.0.0.1:6379> DBSIZE
17
Pankaj Chauhan

Redis 2.6以降、luaがサポートされているため、次のようなワイルドカードキーを多数取得できます。

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

評価コマンド を参照

14
jingchao

dbsize()は、キーの総数を返します。

キーをランダムにサンプリングし、パターンのどの部分に一致するかをチェックすることにより、特定のパターンに一致するキーの数をすばやく推定できます。

Pythonの例; 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個のキーをサンプリングし、合計数を保持することです。これにより、2回のリクエスト後に2000で除算し、3回のリクエストで3000で除算します。一致するキーのかなり頻繁に、その後、真の値にますます近づく。

3
osa

Redis 2.6以降、INFOコマンドの結果はセクションごとに分割されます。 「キースペース」セクションには、「キー」フィールドと「期限切れキー」フィールドがあり、キーの数が示されます。

1
Jiankuan Xing