Mova e exclua chaves Redis por padrão

Ao depurar o código que usa Redis, geralmente é muito útil poder excluir chaves por padrão, como um monte de chaves que correspondem a um prefixo comum. Também é útil ser capaz de manter apenas algumas chaves que correspondem a um determinado padrão e, em seguida, excluir o resto. É fácil fazer diretamente na linha de comando com o redis-cliprograma.

O padrão deve seguir o mesmo padrão usado pelo comando KEYS . É uma boa ideia ler as notas aqui: KEYS é um comando caro e deve ser usado com algum cuidado.

Excluir todas as chaves correspondentes ao padrão

Veja como você pode excluir rapidamente todas as chaves que correspondem a um determinado padrão $PATTERN. Ele usa o comando DEL , então muitas chaves são excluídas em um único comando.

$ redis-cli --raw keys "$PATTERN" | xargs redis-cli del

Mover o padrão de correspondência de todas as teclas

Veja como mover todas as chaves correspondentes $PATTERNde db0 a db1. Ele usa o comando MOVE , então apenas 1 tecla pode ser movida por comando. Isso não significa que você terá que ligar várias vezes, apenas significa que haverá mais viagens de ida e volta na rede.

$ redis-cli --raw keys "$PATTERN" | xargs -L1 -I{} redis-cli move {} 1

Agora você pode limpar o db0 com segurança e todas as chaves que você salvou ainda estarão disponíveis no db1. Depois de liberar db0, você pode mover as chaves de volta para db0 de db1 novamente:

$ redis-cli flushdb
$ redis
-cli --raw -n 1 keys "$PATTERN" | xargs -L1 -I{} redis-cli move {} 0

Scripting

Eu uso esses comandos o tempo todo, então escrevi alguns pequenos scripts de shell cujas opções de comando correspondem à invocação para tornar isso mais fácil de fazer, especialmente com hosts remotos. Eles estão disponíveis como redis-delkeys.sh e redis-movekeys.sh .redis-cli