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-cli
programa.
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 $PATTERN
de 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