Skip to content

Instantly share code, notes, and snippets.

@kamikaze-lab
Last active August 29, 2015 14:14
Show Gist options
  • Save kamikaze-lab/ba077b2811f7cb85b16a to your computer and use it in GitHub Desktop.
Save kamikaze-lab/ba077b2811f7cb85b16a to your computer and use it in GitHub Desktop.
Borrar llaves de Redis con un patrón

Borrar llaves de Redis con un patrón

Evita tener que crear un script para borrar un conjunto de llaves de Redis, hazlo desde tu terminal

  1. Objetivo y descripción
  2. Dependencias
  3. Puesta en marcha
  4. Referencias
  5. Créditos y autor

Dado que el cliente de Redis no tiene una función nativa para borrar llaves dado un patrón o expresión normalmente se acostumbra usar la función KEYS que permite traer todas las llaves que concuerdan con un patrón y posteriormente se recorren estas llaves y se ejecutan el borrado, pero normalmente requieres de algún script que sea el que haga estas operaciones sin poder hacerlo desde el cliente nativo de redis.

En este snippet aprovechamos una de las ventajas de Redis a partir de la versión 2.6.0 que es el poder ejecutar Lua scripts a través del comando EVAL, permitiéndonos borrar llaves de redis desde nuestra terminal como si usáramos el comando DEL pero para un patrón que queramos.

  • Redis - Redis is an open source, BSD licensed, advanced key-value cache and store.

Con redis instalado

  1. Abre tu terminal y entra a tu cliente redis, normalmente con ejecutar redis-cli es suficiente.
  2. Según la estructura de tu base elige el patrón que deseas borrar
  3. Sustituye prefix:* por el patrón que tu deseas
  4. Ejecuta el script.
EVAL "local keys = redis.call('keys', ARGV[1]) \n for i=1,#keys,5000 do \n redis.call('del', unpack(keys, i, math.min(i+4999, #keys))) \n end \n return keys" 0 prefix:*
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment