Redis
 sql >> Base de Dados >  >> NoSQL >> Redis

Como excluir chaves que correspondem a um padrão no Redis Cluster


As respostas para essa pergunta tentam remover várias chaves em um único DEL . No entanto, as chaves que correspondem ao padrão fornecido podem NÃO ser localizadas no mesmo slot, e o Redis Cluster NÃO oferece suporte ao comando de várias chaves se essas chaves não pertencerem ao mesmo slot. É por isso que você recebe a mensagem de erro.

Para corrigir esse problema, você precisa DEL estas chaves uma a uma:
redis-cli --scan --pattern "foo*" |xargs -L 1 redis-cli del

O -L opção para xargs O comando especifica o número de chaves a serem excluídas. Você precisa especificar esta opção como 1 .

Para remover todas as chaves correspondentes ao padrão, você também precisa executar o comando acima para todos os nós mestres em seu cluster.

OBSERVAÇÃO

  1. Com este comando, você deve excluir essas chaves uma a uma, e isso pode ser muito lento. Você precisa reprojetar seu banco de dados e usar hash-tags para fazer com que as chaves correspondentes ao padrão pertençam ao mesmo slot. Para que você possa remover essas chaves em um único DEL .

  2. Ou SCAN ou KEYS comando são ineficientes, especialmente, KEYS não deve ser usado na produção. Você precisa considerar a criação de um índice para essas chaves.