TRYAGAIN Multiple keys request during rehashing of slot: Multiple keys request during rehashing of slot (cluster)(スロットの rehash 中の複数キー要求)
Redis意味
Redis Cluster で、ハッシュスロットがノード間で移動中 (rehashing/resharding) に、同じスロットに属する複数のキーを含む要求が行われ、一部のキーは移動済みで他は未移動だった。サーバーは少し後で操作を再試行するよう求めている。
原因
スロット移行の進行中に複数キーのコマンド (MGET、MSET、複数キーの Lua、トランザクション) を実行した。移行中のスロットでは一部のキーがソースノードに、一部がターゲットノードにあるため、コマンドをアトミックに実行できない。
対処方法
クライアントでこのエラーを捕捉し、短時間待ってから再試行する (TRYAGAIN は一時的で、resharding が終了すると解消する)。複数キーの操作では、{app_user123}.profile、{app_user123}.settings のようにハッシュタグを使ってすべてのキーが同じスロットにあることを保証する。クラスタのリバランス (resharding) はトラフィックの少ない時間帯に実施する。
同じデータベースの他の項目
- ERR MULTI calls can not be nestedMULTI calls can not be nested(MULTI はネストできない)
- ERR Lua script attempted to access nonexistent global variableLua script attempted to access a nonexistent global variable(Lua スクリプトが存在しないグローバル変数にアクセスしようとした)
- ERR unknown commandUnknown command(不明なコマンド)
- ERR DISCARD without MULTIDISCARD without MULTI(MULTI なしの DISCARD)
- BUSYGROUP Consumer Group name already existsConsumer group already exists(コンシューマグループが既に存在する)
- NOGROUP No such key or consumer groupNo such key or consumer group in stream(ストリームにそのキーまたはコンシューマグループがない)
- NOTBUSY No scripts in execution right nowNo scripts in execution right now(現在実行中のスクリプトはない)