Redisクラスタの全てのキーをイテレートする方法
Redisクラスター内で、全キーを走査するには以下の方法がある。
- redis-cli コマンドラインツールを使ってイテレートする:
- Redis クラスタのいずれかのノードに接続します。
- CLUSTER KEYSLOT コマンドを使用して、指定された key が格納されているスロットを取得します。
- 指定されたスロットのキーを取得する場合は、CLUSTER GETKEYSINSLOT コマンドを使用します。
- これまでの2つの手順を、すべてのスロットが調べ終わるまで繰り返す。
- redis-py-cluster Pythonライブラリを使用して反復処理できます。
- Redis-py-clusterライブラリをインストールする。
- 以下のコードでスキャンします:“` python
import redisclusterstartup_nodes = [
{‘host’: ‘host1’, ‘port’: port1},
{‘host’: ‘host2’, ‘port’: port2},
# 全ノードの host と port を追加
]rc = rediscluster.RedisCluster(startup_nodes=startup_nodes)
keys = []
slots = rc.cluster_slots()
for slot_range in slots:
start_slot, end_slot = slot_range[0], slot_range[1]
for slot in range(start_slot, end_slot + 1):
keys += rc.cluster_get_keys_in_slot(slot)print(keys)
“`
接続先は Redis クラスターのノードであるため、ノードの接続情報を正しく設定しておいてください。