Ответы на этот вопрос попытка удалить несколько ключей в одном DEL
.Однако ключи, соответствующие данному шаблону, НЕ могут находиться в одном и том же слоте, и Redis Cluster НЕ поддерживает команду с несколькими ключами, если эти ключи не принадлежат одному и тому же слоту.Вот почему вы получаете сообщение об ошибке.
Чтобы решить эту проблему, вам нужно DEL
эти ключи по очереди:
redis-cli --scan --pattern "foo*" |xargs -L 1 redis-cli del
Опция -L
дляКоманда xargs
указывает количество удаляемых ключей.Вам нужно указать эту опцию как 1
.
Чтобы удалить все ключи, соответствующие шаблону, вам также необходимо выполнить указанную выше команду для всех главных узлов в вашем кластере.
ПРИМЕЧАНИЕ
С помощью этой команды вы должны удалить эти ключи один за другим, и это может быть очень медленно.Вам нужно подумать о перепроектировании вашей базы данных и использовать hash-tags , чтобы ключи, соответствующие шаблону, принадлежали одному и тому же слоту.Таким образом, вы можете удалить эти ключи в одной DEL
.
Либо команда SCAN
, либо KEYS
неэффективна, тем более, что KEYS
не следует использовать в производстве.Вам нужно подумать о создании индекса для этих ключей.