Redis proporciona un método para almacenar datos de forma permanente en disco mediante el AOF (Archivo Solo de Añadido). Sin embargo, a medida que pasa el tiempo, el tamaño del archivo AOF puede crecer, lo que puede causar una disminución de rendimiento y problemas de espacio en disco. Para resolver esto, Redis ofrece la función de AOF Rewrite (reescritura, compresión). En este artículo, exploraremos qué es AOF Rewrite, cómo funciona y cómo configurarlo.
1. ¿Qué es AOF (Archivo Solo de Añadido)? ¿Por qué se necesita reescritura?
Redis utiliza archivos AOF para almacenar datos de forma permanente registrando todas las operaciones de escritura de manera secuencial. Por ejemplo, cada vez que se ejecuta un comando como SET key value
, se registra en el archivo AOF. Esto permite que el servidor Redis pueda restaurar los datos incluso después de un reinicio.
Sin embargo, a medida que pasa el tiempo, los comandos duplicados para la misma clave continúan acumulándose en el archivo AOF, aumentando su tamaño y provocando tiempos de recuperación más largos.
Para resolver esto, se ofrece la función de AOF Rewrite (compresión, limpieza).
2. ¿Qué es AOF Rewrite?
AOF Rewrite es el proceso de reemplazar el archivo existente appendonly.aof
con un nuevo archivo optimizado. Se crea un nuevo archivo mientras se mantiene el archivo AOF original y se eliminan los comandos innecesarios, reduciendo su tamaño. Lo importante aquí es la expresión de reemplazar el archivo original después de optimizarlo. Esta expresión resume el funcionamiento de la reescritura.
📌 Cómo funciona AOF Rewrite
- Redis no modifica directamente el archivo AOF existente, sino que crea un nuevo archivo AOF.
- El nuevo archivo incluye solo los comandos mínimos que reflejan el estado actual.
- Por ejemplo, si el archivo AOF existente es el siguiente:
SET key1 "hello"
SET key1 "world"
SET key1 "final"
Después de AOF Rewrite, se optimiza a:
SET key1 "final"
Es decir, una vez que se complete el nuevo archivo appendonly.aof.tmp
, se eliminará el archivo original y se reemplazará por el nuevo archivo (el archivo tmp reemplaza al archivo aof).
3. Cómo Configurar AOF Rewrite
✅ Configuración Automática de AOF Rewrite
Redis se puede configurar para ejecutar AOF Rewrite de manera automática. En redis.conf
, se configura de la siguiente manera:
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
auto-aof-rewrite-percentage 100
: Si el tamaño del archivo después de la última reescritura de AOF aumenta más del 100% (2 veces), se realiza la reescritura.auto-aof-rewrite-min-size 64mb
: Se realiza la reescritura solo cuando el archivo AOF tiene un tamaño mínimo de 64 MB.
Es decir, si el tamaño del archivo AOF existente era de 50 MB y luego alcanza los 100 MB, se ejecutará la reescritura automáticamente.
Es recomendable configurar siempre estas dos opciones juntas. Si no se especifica el valor de auto-aof-rewrite-min-size
, puede ocurrir una reescritura innecesaria cuando el tamaño del archivo AOF anterior es de 20 MB y luego aumenta a 40 MB. Por lo tanto, al configurar auto-aof-rewrite-min-size
, se garantiza que la reescritura solo se ejecute cuando el tamaño supere un límite determinado.
Es decir, si el tamaño del archivo AOF existente era de 50 MB y luego alcanza los 100 MB, se ejecutará la reescritura automáticamente.
✅ Ejecutar AOF Rewrite Manualmente
Ejecutando el siguiente comando, Redis llevará a cabo inmediatamente la reescritura de AOF.
redis-cli BGREWRITEAOF
Al ejecutar este comando, Redis genera en segundo plano un nuevo archivo AOF, y el proceso de reemplazo del archivo existente se lleva a cabo de forma automática.
4. Resultados de AOF Rewrite
Cuando se ejecuta AOF Rewrite, se generan archivos como los siguientes en el directorio de datos de Redis (/var/lib/redis
etc.).
ls /var/lib/redis
Ejemplo de salida:
appendonly.aof
appendonly.aof.tmp # archivo temporal creado durante la reescritura
appendonly.aof.tmp
: nuevo archivo AOF optimizado creado durante AOF Rewrite.appendonly.aof
: eliminado el archivo original y reemplazado por el nuevo archivo después de completar la reescritura.
🚨 AOF Rewrite no comprime el archivo AOF existente, sino que genera un nuevo archivo AOF para reemplazar el original.
5. ¿Cuándo se debe utilizar AOF Rewrite?
✅ Cuando el tamaño del archivo AOF se vuelve demasiado grande y ocupa mucho espacio en disco. - Dado que Redis escribe datos continuamente, el tamaño del archivo aumenta con el tiempo. - Se pueden eliminar comandos innecesarios para reducir el uso del disco.
✅ Cuando se desea acelerar la velocidad de recuperación al reiniciar Redis. - Si el tamaño del archivo AOF es grande, cuando Redis se reinicia tiene que ejecutar todos los comandos para recuperar los datos, lo que lleva mucho tiempo. - Al realizar AOF Rewrite, se reduce el tamaño del archivo y se acelera la velocidad de recuperación.
✅ Cuando se desea optimizar el rendimiento de Redis. - Si el archivo AOF se vuelve demasiado grande, puede disminuir el rendimiento de Redis. - Ejecutar AOF Rewrite periódicamente puede hacer que Redis funcione de manera más estable.
6. Diferencias entre RDB Snapshot y AOF Rewrite
Ítem de Comparación | AOF (Archivo Solo de Añadido) | RDB (Base de Datos de Redis) |
---|---|---|
Método de Almacenamiento | Registra todas las operaciones de escritura | Realiza un volcado de todos los datos en intervalos regulares |
Velocidad de Recuperación | Lenta (se necesitan ejecutar todos los comandos) | Rápida (recuperación de volcado binario) |
Posibilidad de Pérdida de Datos | Baja (depende de la configuración de fsync) | Existe (depende del período de instantáneas) |
Tamaño de Archivo | Grande (se registran todas las operaciones) | Pequeño (solo se guarda el estado más reciente) |
Impacto en el Rendimiento | Alto (todas las operaciones se registran en el log) | Bajo (realiza volcado periódico) |
Uso Adecuado | Cuando se necesita alta durabilidad | Cuando se necesita una recuperación rápida |
👉 En entornos operativos de Redis, es común configurar AOF + RDB para lograr un rendimiento y estabilidad óptimos.
7. Conclusión y Resumen
- La AOF Rewrite de Redis se utiliza para reducir el tamaño del archivo AOF y mejorar la velocidad de recuperación.
- No se modifica directamente el archivo AOF existente, sino que se crea un nuevo archivo AOF optimizado para reemplazar el original.
- Al configurar adecuadamente
auto-aof-rewrite-percentage
yauto-aof-rewrite-min-size
, se puede realizar AOF Rewrite automáticamente, permitiendo gestionar de forma eficiente el rendimiento y el espacio de almacenamiento. - Utilizándolo junto con RDB, se puede optimizar simultáneamente la durabilidad y el rendimiento de Redis.
📌 ¡Utiliza AOF Rewrite adecuadamente al operar Redis para optimizar su rendimiento! 🚀
Si buscas en el cuadro de búsqueda a la derecha, puedes encontrar más artículos sobre la configuración de redis.
Si necesitas aclarar los conceptos de RDB
y AOF
, te recomendamos que también leas el siguiente artículo.
Redis Parte 2: Opciones de conservación de datos de Redis - RDB vs AOF
Add a New Comment