redis実戦第12編redis clusterリクエストリダイレクト

1737 ワード

クラスタモードでは、redisはキーのコマンドを受信すると、キーが存在するスロットを先に計算し、キーが存在するスロットが現在のノードにある場合はコマンドを直接実行し、キーが他のノードにある場合はコマンドを実行せず、リダイレクト情報を返す.例えばhelloというキー溝866上に曹866が31ノード上にあり、32上でget helloが実行されるとリダイレクト情報が返される.
127.0.0.1:6380> get hello
(error) MOVED 866 192.168.0.31:6380

リダイレクト情報には、キーが存在するスロット、すでにスロットが存在するノード情報が含まれます.
1.キーが存在するノード情報を検索するには、以下のコマンドでキーが存在するスロット情報を取得できます.
127.0.0.1:6380> cluster keyslot hello
(integer) 866

さらにcluster nodesでスロットが存在するノードの情報を取得すると,キーが存在するノード情報がわかる.
2.-cパラメータを使用してredis-cliを使用する場合、-cパラメータを追加することで、redisが正しいノードに接続してコマンドを実行するのに自動的に役立ちます.
[root@kafka32 ~]# redis-cli -a password -p 6380 -c
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
127.0.0.1:6380> get hello
-> Redirected to slot [866] located at 192.168.0.31:6380
"cluster"

3.hash_tagキーに{}が含まれている場合、クラスタはスロットを計算する際に{}内のコンテンツを使用し、キー全体ではなく{}内のコンテンツをhash_と呼ぶ.tag.異なるキーが同じslot機能を有し、通常redisIO最適化に使用される.
[root@kafka32 ~]# redis-cli -a 1234@abcd -p 6380 -c
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
  {},age id         
192.168.02.31:6380> set user:info:age 18
-> Redirected to slot [8325] located at 192.168.0.32:6380
OK
192.168.0.32:6380> set user:info:id "1234121"
-> Redirected to slot [15358] located at 192.168.0.33:6380
OK

  {},            
192.168.0.32:6380> set user:{info}:id "232132"
OK
192.168.0.32:6380> set user:{info}:age 20
OK
192.168.0.32:6380> set user:{info}:name peter
OK
192.168.0.32:6380> set user:{info}:email "[email protected]"
OK