Redis es un almacén de datos basado en memoria, por lo que es fundamentalmente volátil. Cuando el servidor de Redis se reinicia, todos los datos pueden desaparecer, y para compensar esto, Redis ofrece dos métodos de conservación de datos: RDB (Redis Database Snapshot) y AOF (Append-Only File). En esta publicación, analizaremos las características y diferencias de ambos métodos, y organizaremos los métodos de configuración, ventajas y desventajas de cada uno.
1. RDB (Redis Database Snapshot)
RDB es un método en el que Redis guarda periódicamente los datos que almacena en memoria en forma de instantáneas (Snapshots) en el disco. Redis genera un archivo RDB en función del período configurado, y gracias a este archivo, se pueden recuperar los datos al reiniciar el servidor.
Características principales de RDB
- Ciclo de almacenamiento: Se puede establecer el ciclo de almacenamiento de datos en el disco a través de la opción
save
en el archivoredis.conf
. Por ejemplo,save 60 1000
generará una instantánea cuando se cambien más de 1000 claves cada 60 segundos.
save 60 1000
- Ubicación del archivo: El archivo RDB se guarda por defecto en el directorio especificado en
dir
, siendo la ruta base/var/lib/redis
y el nombre del archivodump.rdb
.
dir /var/lib/redis/
dbfilename dump.rdb
Ventajas de RDB
- Alto rendimiento: El método RDB no afecta significativamente al rendimiento de Redis, y si el ciclo de generación de instantáneas es largo, el consumo de recursos de CPU también es bajo.
- Tamaño de archivo pequeño: Como se registra periódicamente toda la información en una instantánea, el tamaño del archivo es relativamente pequeño, lo que facilita la gestión de respaldos.
Desventajas de RDB
- Posibilidad de pérdida de datos: Debido a que RDB guarda los datos de forma periódica, si Redis se detiene inesperadamente, los datos posteriores a la última instantánea podrían perderse.
- Velocidad de recuperación: RDB guarda todos los datos en una instantánea a la vez, por lo que puede tardar más tiempo en recuperar grandes volúmenes de datos.
Casos de uso adecuados para RDB
RDB es adecuado para casos donde la caché de datos se puede respaldar a intervalos regulares. Es ventajoso cuando se necesita un respaldo periódico de datos, en lugar de una cola de trabajo en tiempo real, y permite asegurar la conservación de datos de manera sencilla mientras se mantiene el rendimiento del servidor Redis.
2. AOF (Append-Only File)
AOF proporciona una conservación de datos continua al registrar secuencialmente todas las operaciones de escritura de Redis en el disco. Los archivos AOF registran todos los cambios de datos, por lo que se pueden recuperar de manera completa utilizando archivos AOF, incluso después de reiniciar el servidor Redis.
Características principales de AOF
- Método de registro de comandos: El archivo AOF registra todos los comandos que cambian los datos. Cuando hay un comando de escritura, se guarda en el disco, por lo que se almacena todo el historial de cambios de datos.
- Ubicación y nombre del archivo: El archivo AOF se guarda por defecto con el nombre especificado en la opción
appendfilename
. El nombre por defecto esappendonly.aof
y se almacena en el directorio especificado por la configuración dedir
.
dir /var/lib/redis/
appendonly yes
appendfilename appendonly.aof
- Ciclo de sincronización: La opción
appendfsync
permite establecer el ciclo en el que se registran los datos en el disco.
appendfsync everysec # Sincronizar cada segundo
Ventajas de AOF
- Conservación de datos: Dado que se registra cada operación de escritura en el disco, es posible recuperar los datos hasta el último estado registrado, incluso si el servidor se detiene inesperadamente.
- No graba comandos de lectura: AOF solo registra comandos que cambian los datos, por lo que no incluye comandos de lectura innecesarios, lo que ahorra espacio de almacenamiento.

Desventajas de AOF
- Posibilidad de disminución de rendimiento: Al registrar todas las operaciones de escritura en el disco, especialmente si la opción
appendfsync
se establece enalways
, puede haber disminución del rendimiento. - Aumento del tamaño del archivo: En caso de cambios de datos frecuentes, el tamaño del archivo AOF puede incrementarse considerablemente. Para resolver esto, Redis puede comprimir el archivo AOF usando el comando BGREWRITEAOF.
Casos de uso adecuados para AOF
AOF es útil en colas de trabajo o aplicaciones donde la conservación de datos es crítica. En casos donde la conservación de datos es importante, se puede utilizar junto con una sincronización periódica (everysec
) para lograr un equilibrio entre rendimiento y conservación de datos.
3. Uso simultáneo de RDB y AOF
En Redis, es posible usar simultáneamente los métodos RDB y AOF para mantener un equilibrio entre la conservación de datos y el rendimiento. Cuando ambos métodos están habilitados, Redis prioriza el archivo AOF para la recuperación.
- RDB: Guarda datos de forma rápida y sencilla, proporcionando una conservación básica de respaldos mediante instantáneas.
- AOF: Registra todas las operaciones de escritura para aumentar la conservación de datos, minimizando así la posibilidad de pérdida de datos.
4. Ejemplo de configuración de Redis
A continuación se muestra un ejemplo de configuración que utiliza RDB y AOF simultáneamente, manteniendo un rendimiento adecuado y conservación de datos.
# Configuración de directorio y archivo básicos de Redis
dir /var/lib/redis/
dbfilename dump.rdb
appendfilename appendonly.aof
# Configuración de instantáneas RDB (guardar instantáneas si se cambian más de 1000 claves cada 60 segundos)
save 60 1000
# Configuración de AOF
appendonly yes
appendfsync everysec # Sincronizar en el disco cada segundo
# Configuración de reescritura de archivos AOF (reescribir automáticamente al 100% si el tamaño del archivo supera los 64 MB)
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
Conclusión
En esta publicación, hemos explorado los dos métodos de conservación de datos en Redis, que son RDB y AOF. Cada uno de estos métodos tiene diferencias en conservación y rendimiento, por lo que es importante elegir el método adecuado según las características de la aplicación. En la próxima parte, abordaremos la gestión de memoria y la optimización del rendimiento en Redis, y presentaremos formas de utilizar la memoria de Redis de manera eficiente.
Add a New Comment