DBAtlas · Atlas de operaciones de bases de datos

Encontrar claves que coinciden con un patrón sin KEYS y borrarlas con seguridad (SCAN + UNLINK)

RedisMantenimiento

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

Qué hace

Recorre el keyspace con un cursor sin bloquear el servidor, cuenta las claves que coinciden con un patrón y un tipo, y las borra en bloque con UNLINK, liberando la memoria en segundo plano.

Cuándo usarlo

Al limpiar claves dejadas por una versión antigua de la aplicación, al averiguar cuántas claves hay bajo un prefijo o cuando de otro modo haría falta KEYS en producción.

Precaución

KEYS devuelve todo el keyspace de una vez y bloquea el servidor durante segundos con muchos datos; no lo use en producción. SCAN no da una garantía completa para las claves añadidas/eliminadas durante el recorrido y puede devolver la misma clave más de una vez. Los nombres de clave con espacios o comillas se rompen con xargs. Compruebe el recuento y algunas muestras antes de borrar; no hay deshacer.

Abrir en DBAtlas →

Relacionado