Redisクラスタの全てのキーをイテレートする方法

Redisクラスター内で、全キーを走査するには以下の方法がある。

  1. redis-cli コマンドラインツールを使ってイテレートする:
  2. Redis クラスタのいずれかのノードに接続します。
  3. CLUSTER KEYSLOT コマンドを使用して、指定された key が格納されているスロットを取得します。
  4. 指定されたスロットのキーを取得する場合は、CLUSTER GETKEYSINSLOT コマンドを使用します。
  5. これまでの2つの手順を、すべてのスロットが調べ終わるまで繰り返す。
  6. redis-py-cluster Pythonライブラリを使用して反復処理できます。
  7. Redis-py-clusterライブラリをインストールする。
  8. 以下のコードでスキャンします:“` python
    import rediscluster

    startup_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 クラスターのノードであるため、ノードの接続情報を正しく設定しておいてください。

bannerAds