Redis クラスタは、キースペースを 16384 個のスロットに分割します。各マスターノードは、これらのスロットのサブセットを担当します。新しいノードを追加しても、最初はどのスロットも所有していません。リシャーディングは、既存のノードから新しいノードにスロットを移動し、データとワークロードのバランスを取ります。
-
redis-cli --cluster を使用したクラスタへの接続 (Connect to the Cluster using redis-cli --cluster):
リシャーディング操作を実行するには、redis-cli --cluster reshard コマンドを使用します。このコマンドは、クラスタ全体にスロットを再分散するためのインタラクティブな方法を提供します。
ターミナルを開き、次のコマンドを実行します。
redis-cli --cluster reshard 127.0.0.1:7000
このコマンドは、127.0.0.1:7000 のノードを介して Redis クラスタに接続し、リシャーディングプロセスを開始します。
-
移動するスロット数の指定 (Specify the Number of Slots to Move):
redis-cli ツールは、移動するスロットの数を入力するように求めます。この例では、101 個のスロットを新しいノードに移動しましょう。
How many slots do you want to move? (default: all)
101 と入力して Enter キーを押します。
-
ターゲットノード ID の入力 (Enter the Target Node ID):
次に、ツールはターゲットノードのノード ID を入力するように求めます。これは、前のステップで追加した新しいノード (ポート 7006) です。ノード ID を見つけるには、前のステップで示したように CLUSTER NODES コマンドを使用するか、次のコマンドを使用してノード ID を直接取得できます。
redis-cli -h 127.0.0.1 -p 7006 cluster nodes | grep myself | awk '{print $1}'
出力からノード ID をコピーします。redis-cli ツールは次のようにプロンプト (prompt) を表示します。
What is the receiving node ID?
ノード ID を貼り付けて Enter キーを押します。
-
ソースノードの指定 (Specify the Source Nodes):
ツールは、スロットを取得するソースノードを指定するように求めます。all と入力すると、既存のすべてのマスターノードからスロットが再分散されます。
Please enter all the source node IDs.
Type 'all' to use all the nodes as source nodes for the hash slots.
Type 'done' to stop entering IDs.
all と入力して Enter キーを押します。
-
リシャーディング計画の確認 (Confirm the Resharding Plan):
redis-cli ツールは、リシャーディング計画を表示し、確認を求めます。
Do you want to proceed with the reshard plan? (type 'yes' to accept):
yes と入力して Enter キーを押すと、リシャーディングプロセスが開始されます。
-
リシャーディングの完了を待機 (Wait for Resharding to Complete):
redis-cli ツールは、ソースノードからターゲットノードにスロットを移動します。このプロセスには、クラスタ内のデータ量に応じて時間がかかる場合があります。スロットが移動されると、進行状況メッセージが表示されます。
-
redis-cli の終了 (Exit redis-cli):