回答:
サーバーに関する情報と統計を返すINFOコマンドを発行できます。出力例については、こちらをご覧ください。
mVChrのコメントで述べたようinfo keyspace
に、redis-cliで直接使用できます。
redis-cli INFO Keyspace | grep ^db
KEYS *
は、期限切れのキーを削除します。また、Redis は一部の期限切れのキーを積極的に削除する可能性がありますが、必ずしもすべてのキーを削除する必要はありません。
警告:これを運用マシンで実行しないでください。
Linuxボックス:
redis-cli KEYS "*" | wc -l
注:以下のコメントで述べているように、これはO(N)操作であるため、多くのキーを持つ大規模なDBでは、これを使用しないでください。小規模な展開の場合は問題ありません。
キーの総数を取得するには、以下のコマンドを使用します。
127.0.0.1:6379> DBSIZE
Redis 2.6以降、luaがサポートされているため、次のようなワイルドカードキーの数を取得できます。
eval "return #redis.call('keys', 'prefix-*')" 0
KEYS
キーを数えるために(接頭辞の有無にかかわらず)を使用することは、赤ちゃんを風呂水で投げ出すようなものです。
#
このコードのは、長さ演算子です。
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で割ります。したがって、アプリケーションが合計数に関心がある場合かなり頻繁にキーを照合することで、その後は常に真の値にますます近づきます。
Redis 2.6以降、INFOコマンドの結果はセクションごとに分割されます。「keyspace」セクションには、「keys」フィールドと「expired keys」フィールドがあり、そこにいくつのキーがあるかを示します。