DBAtlas · Atlas de operações de banco de dados

Encontrar chaves que correspondem a um padrão sem KEYS e apagá-las com segurança (SCAN + UNLINK)

RedisManutenção

Comando

# Cursor-based scan instead of KEYS (call again with the returned cursor until it returns 0):
SCAN 0 MATCH oturum:* COUNT 1000 TYPE string
# Number of keys matching the pattern:
redis-cli -h redis1 -p 6379 --scan --pattern 'oturum:*' --count 1000 | wc -l
# Bulk delete in batches of 500, freeing memory in the background:
redis-cli -h redis1 -p 6379 --scan --pattern 'oturum:*' --count 1000 | xargs -r -n 500 redis-cli -h redis1 -p 6379 UNLINK

O que faz

Varre o keyspace com um cursor sem bloquear o servidor, conta as chaves que correspondem a um padrão e tipo e as apaga em massa com UNLINK, liberando a memória em background.

Quando usar

Ao limpar chaves deixadas por uma versão antiga da aplicação, ao descobrir quantas chaves existem sob um prefixo ou quando, de outra forma, seria preciso usar KEYS em produção.

Atenção

KEYS retorna o keyspace inteiro de uma vez e bloqueia o servidor por segundos em grandes volumes de dados; não use em produção. O SCAN não dá garantia total para chaves adicionadas/removidas durante a varredura e pode retornar a mesma chave mais de uma vez. Nomes de chaves com espaços ou aspas quebram com xargs. Verifique a contagem e algumas amostras antes de apagar; não há como desfazer.

Abrir no DBAtlas →

Relacionados