私はこれでメソッドを試しました question ですが、クラスタモードで作業しているため、機能しません。
(エラー)リクエストのCROSSSLOTキーが同じスロットにハッシュされない
その答え question 単一のDEL
内の複数のキーを削除しようとします。ただし、指定されたパターンに一致するキーは同じスロットに配置されない場合があり、これらのキーが同じスロットに属していない場合、Redisクラスターはマルチキーコマンドをサポートしません。そのため、エラーメッセージが表示されます。
この問題を解決するには、これらのキーを1つずつDEL
する必要があります。
redis-cli --scan --pattern "foo*" |xargs -L 1 redis-cli del
xargs
コマンドの-L
オプションは、削除するキーの数を指定します。このオプションを1
として指定する必要があります。
パターンに一致するすべてのキーを削除するには、クラスター内のすべてのマスターノードに対して上記のコマンドを実行する必要もあります。
[〜#〜]ノート[〜#〜]
このコマンドでは、これらのキーを1つずつ削除する必要があり、非常に時間がかかる場合があります。データベースの再設計を検討し、ハッシュタグを使用して、パターンに一致するキーが同じスロットに属するようにする必要があります。これらのキーを単一のDEL
で削除できるようにします。
SCAN
またはKEYS
コマンドは非効率的です。特に、KEYS
は本番環境では使用しないでください。これらのキーのインデックスの作成を検討する必要があります。