回答:
KEYS
コマンドを見てみてください。KEYS *
redisに保存されているすべてのキーが一覧表示されます。
編集:KEYS
ドキュメントページの上部にある警告に注意してください:
時間の複雑さ: O(N)。Nはデータベース内のキーの数であり、データベース内のキー名と指定されたパターンの長さが制限されていると想定しています。
UPDATE(V2.8以上): サーバーをブロックしたり、大量のリソースを消費したりしないという意味で、のSCAN
優れた代替手段KEYS
です。それを使用することをお勧めします。
KEYS
、大きなデータセットをクエリする場合にサーバーを長時間ブロックする可能性があることです
Redis 2.8以降用に更新
この質問に対する以前の回答のコメントで述べたように、KEYS
は、Redisサーバーがサービスを提供している間、他の操作を実行できないため、潜在的に危険なコマンドです。別のリスクKEYS
は、レスポンスバッファーを準備するために(キースペースのサイズに応じて)多くのRAMを消費し、サーバーのメモリを使い果たす可能性があることです。
Redisのバージョン2.8でSCANが導入されましたファミリーのコマンドより洗練されており、同じ目的で使用できます。
CLIは、CLIを操作するための優れた方法も提供します。
$ redis-cli --scan --pattern '*'
redis-cliを使用してリモートredis-serverに接続してから、次のコマンドを実行する場合があります。
KEYS *
何も表示されていない、またはより良い、それは示しています:
(empty list or set)
使用するRedisサーバーがデータのあるサーバーであることが確実である場合は、redis-cliがRedisの正しいデータベースインスタンスに接続していない可能性があります。
Redisのドキュメントで言及されているように、新しい接続はデフォルトでdb 0に接続します。
私の場合KEYS
、データベースが1だったため、コマンドは結果を取得していませんでした。目的のデータベースを選択するには、SELECTを使用します。
dbは整数で識別されます。
SELECT 1
KEYS *
以前の回答で私の問題を解決できなかったため、この情報を投稿します。
-> redis-cliからすべてのキーを取得する
-redis 127.0.0.1:6379> keys *
->パターンのリストを取得する
-redis 127.0.0.1:6379> keys d??
これにより、「d」で始まる3文字のキーが生成されます。
-redis 127.0.0.1:6379> keys *t*
これは、キーの「t」文字に一致するキーを取得します
->コマンドラインからキーをカウントする
-redis-cli keys * |wc -l
->または使用できます dbsize
-redis-cli dbsize
key *t*
してくださいkeys *t*
。
以下のRedisチートシートをご覧ください。redis-cliでredisキーのサブセットを取得するには、次のコマンドを使用します
KEYS "prefix:*"
SCANでは、KEYSのように、クライアントがすべてのキーをメモリにロードする必要はありません。SCANは、使用できるイテレーターを提供します。redisに1Bレコードがあり、すべてのキーを一度に返すのに十分なメモリを確保できませんでした。
以下は、パターンに一致するストアからすべてのキーを取得して削除するpythonスニペットです。
import redis
r = redis.StrictRedis(host='localhost', port=6379, db=0)
for key in r.scan_iter("key_pattern*"):
print key
redis-cli -h <host> -p <port> keys *
ここで*はすべてのキーをリストするパターンです
redis-cli -h <host> -p <port> keys '*'
KEYSパターン
1.0.0以降で使用可能です。
時間の複雑さ:O(N)。Nはデータベース内のキーの数であり、データベース内のキー名と指定されたパターンの長さが制限されていると想定しています。
パターンに一致するすべてのキーを返します。
警告:このコマンドは、SCANまたはSETSを使用できるKEYSの代わりに大きなデータベースに対して実行するとパフォーマンスが低下する可能性があるため、使用することはお勧めしません。。
使用するKEYSコマンドの例:
redis> MSET firstname Jack lastname Stuntman age 35
"OK"
redis> KEYS *name*
1) "lastname"
2) "firstname"
redis> KEYS a??
1) "age"
redis> KEYS *
1) "lastname"
2) "age"
3) "firstname"
Redisがクラスターの場合、このスクリプトを使用できます
#!/usr/bin/env bash
redis_list=("172.23.3.19:7001,172.23.3.19:7002,172.23.3.19:7003,172.23.3.19:7004,172.23.3.19:7005,172.23.3.19:7006")
arr=($(echo "$redis_list" | tr ',' '\n'))
for info in ${arr[@]}; do
echo "start :${info}"
redis_info=($(echo "$info" | tr ':' '\n'))
ip=${redis_info[0]}
port=${redis_info[1]}
echo "ip="${ip}",port="${port}
redis-cli -c -h $ip -p $port set laker$port '湖人总冠军'
redis-cli -c -h $ip -p $port keys \*
done
echo "end"
redisサーバーで利用可能なすべてのキーを取得するには、redis-cliを開き、次のように入力する必要
KEYS *
があります。さらにヘルプを得るには、このページにアクセスしてください:
このリンク
--scan --patternをredis 2.8以降で使用する必要があります。
このラッパーをredis-cliの上で使用してみてください。 https://github.com/VijayantSoni/redis-helper
redis-cliを使用してredisサーバーに接続し、データベースを選択してKEYS *と入力するだけです。選択したredisデータベースに存在するすべてのキーが表示されることに注意してください。
redis-cli keys "*"