Redisがkeysコマンドを使用せずにキー値情報を取得する方法

1148 ワード

1.問題の出所
この問題は奇妙に見えるかもしれませんが、多くのredisクラスタには統一的なエントリがあり、エントリはredisコマンドに互換性のあるエージェントとなります.一般的にkeysコマンドを使用してキー値情報を取得することは禁止されていますが、keysコマンドの代わりにscanコマンドを使用することができます.
2.keysの使い方

127.0.0.1:6379> KEYS *
1) "_kombu.binding.test_queue"
2) "a8e620b9-e52e-3498-8a1c-448f35783058"
3) "_kombu.binding.celery"

3.scanを使用する方法

127.0.0.1:6379> DBSIZE
(integer) 3
127.0.0.1:6379> SCAN 0 MATCH * COUNT 3
1) "5"
2) 1) "a8e620b9-e52e-3498-8a1c-448f35783058"
 2) "_kombu.binding.test_queue"
 3) "_kombu.binding.celery"

簡単な説明
SCANコマンド(および関連するSSCAN/HSCAN/ZSCAN、それぞれSET/HASH/ZSET)は、1つのセット内の要素をインクリメンタルに巡回するために使用されます.増分特性(使用するたびに要素の一部のみが返される)のため、KEYSコマンドまたはSMEMBERSコマンドの代わりに本番環境で使用できます(KEYSコマンドまたはSMEMBERSコマンドは、返される要素が多すぎてredisをブロックする可能性があります).
だから本番環境ではredisサービスがkeysコマンドをサポートしてもscanで代用すべきである.
参照先:
1. https://groups.google.com/forum/#!topic/redis-db/zZeI_PjHF_M 2. https://redis.io/commands/scan
まとめ
以上、編集者がご紹介したRedisはkeysコマンドを使用してキー値情報を取得しないことについての知識を持っています.