CROSSSLOT: CROSSSLOT Keys in request don't hash to the same slot(キーが同じスロットにハッシュされない)
Redis意味
Redis Cluster でマルチキーコマンド (例: MGET、MSET、SUNION) が使われたが、キーが異なるハッシュスロットに属している。マルチキー操作ではすべてのキーが同じスロットにある必要がある。
原因
クラスタモードで、複数のキーに同時にアクセスするコマンドが、異なるスロットに分散したキーで呼び出されている。キーがハッシュタグを使っていないため、異なるノードに分散している。
対処方法
ハッシュタグを使って関連キーを同じスロットに配置する: キー名の一部を波括弧で固定する (例: {user1}:profile と {user1}:settings は同じスロットに入る)。マルチキーコマンドは同じハッシュタグを共有するキーでのみ使う。代わりに、操作を単一キーのコマンドに分割する。
同じデータベースの他の項目
- LOADINGLOADING Redis is loading the dataset in memory(データセットをメモリにロード中)
- BUSYBUSY Redis is busy running a script. You can only call SCRIPT KILL or SHUTDOWN NOSAVE(スクリプト実行中でビジー)
- MISCONFMISCONF Redis is configured to save RDB snapshots, but it's currently unable to persist to disk(RDB スナップショットをディスクに保存できない)
- MOVEDMOVED slot ip:port (クラスタリダイレクト)
- ASKASK slot ip:port (クラスタリダイレクト)
- NOSCRIPTNOSCRIPT No matching script. Please use EVAL(一致するスクリプトがない)
- EXECABORTEXECABORT Transaction discarded because of previous errors(以前のエラーによりトランザクションを破棄)