web-dev-qa-db-ja.com

Redisクラスターでパターンに一致するキーを削除する方法

私はこれでメソッドを試しました question ですが、クラスタモードで作業しているため、機能しません。

(エラー)リクエストのCROSSSLOTキーが同じスロットにハッシュされない

4
xingbin

その答え question 単一のDEL内の複数のキーを削除しようとします。ただし、指定されたパターンに一致するキーは同じスロットに配置されない場合があり、これらのキーが同じスロットに属していない場合、Redisクラスターはマルチキーコマンドをサポートしません。そのため、エラーメッセージが表示されます。

この問題を解決するには、これらのキーを1つずつDELする必要があります。

redis-cli --scan --pattern "foo*" |xargs -L 1 redis-cli del

xargsコマンドの-Lオプションは、削除するキーの数を指定します。このオプションを1として指定する必要があります。

パターンに一致するすべてのキーを削除するには、クラスター内のすべてのマスターノードに対して上記のコマンドを実行する必要もあります。

[〜#〜]ノート[〜#〜]

  1. このコマンドでは、これらのキーを1つずつ削除する必要があり、非常に時間がかかる場合があります。データベースの再設計を検討し、ハッシュタグを使用して、パターンに一致するキーが同じスロットに属するようにする必要があります。これらのキーを単一のDELで削除できるようにします。

  2. SCANまたはKEYSコマンドは非効率的です。特に、KEYSは本番環境では使用しないでください。これらのキーのインデックスの作成を検討する必要があります。

6
for_stack