Как удалить ключи, соответствующие шаблону в Redis Cluster - PullRequest
0 голосов
/ 11 декабря 2018

Я попробовал метод в этом вопросе , но он не работает, так как я работаю в режиме кластера, и Redis сказал мне:

(ошибка) Ключи CROSSSLOTв запросе не хэшируйте в один и тот же слот

1 Ответ

0 голосов
/ 11 декабря 2018

Ответы на этот вопрос попытка удалить несколько ключей в одном DEL.Однако ключи, соответствующие данному шаблону, НЕ могут находиться в одном и том же слоте, и Redis Cluster НЕ поддерживает команду с несколькими ключами, если эти ключи не принадлежат одному и тому же слоту.Вот почему вы получаете сообщение об ошибке.

Чтобы решить эту проблему, вам нужно DEL эти ключи по очереди:

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

Опция -L дляКоманда xargs указывает количество удаляемых ключей.Вам нужно указать эту опцию как 1.

Чтобы удалить все ключи, соответствующие шаблону, вам также необходимо выполнить указанную выше команду для всех главных узлов в вашем кластере.

ПРИМЕЧАНИЕ

  1. С помощью этой команды вы должны удалить эти ключи один за другим, и это может быть очень медленно.Вам нужно подумать о перепроектировании вашей базы данных и использовать hash-tags , чтобы ключи, соответствующие шаблону, принадлежали одному и тому же слоту.Таким образом, вы можете удалить эти ключи в одной DEL.

  2. Либо команда SCAN, либо KEYS неэффективна, тем более, что KEYS не следует использовать в производстве.Вам нужно подумать о создании индекса для этих ключей.

...