この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
問題
クラスターを組んだ Redis に対して、redis-cli からコマンド実行すると "(error) MOVED" エラーが発生することがあります。
$ redis-cli -h HOSTNAME set foo bar
(error) MOVED 12182 172.31.11.135:6379
原因
コマンドに対応するハッシュスロットが別ノードにあり、コマンドを別ノードで処理する必要があるときに、このエラーが発生します。
上記エラーメッセージでは
12182
はハッシュスロット172.31.11.135:6379
はこのハッシュスロットを処理可能なノードの IP アドレス:ポート番号
を表します。
解決法
redis-cli に -c
オプションを追加してください。
Redis クラスターの返す MOVED
/ASK
リダイレクトに対して、適切なノードにコマンドを投げ直します。(Enable cluster mode (follow -ASK and -MOVED redirections).)
$ redis-cli -c -h HOSTNAME set foo bar
OK
Redis SDK のリダイレクトへの対処方法は、各ドキュメントを参照ください。