← Volver al listado de tecnologías
Persistencia en Valkey
Persistencia
Opciones de Persistencia
Valkey ofrece dos mecanismos de persistencia:
| Mecanismo | Descripción | Pros | Contras |
|---|---|---|---|
| RDB | Snapshots periódicos | Compacto, rápido en restart | Puede perder datos |
| AOF | Log de operaciones | Más durable | Archivos más grandes |
RDB (Redis Database)
Configuración
# valkey.conf
# Guardar cada N segundos si hubo M cambios
save 900 1 # 15 min si 1+ cambios
save 300 10 # 5 min si 10+ cambios
save 60 10000 # 1 min si 10000+ cambios
# Desactivar RDB
save ""
# Nombre del archivo
dbfilename dump.rdb
# Directorio
dir /var/lib/valkey
# Compresión
rdbcompression yes
# Checksum
rdbchecksum yes
# Parar si falla el snapshot
stop-writes-on-bgsave-error yes
Comandos RDB
# Snapshot manual en background
BGSAVE
# Snapshot bloqueante (solo en shutdown)
SAVE
# Último snapshot exitoso
LASTSAVE
# Info
INFO persistence
Proceso de snapshot
- Valkey hace fork del proceso
- Proceso hijo escribe datos a archivo temporal
- Al completar, renombra a
dump.rdb - Proceso padre continúa sirviendo requests
# Ver progreso
INFO persistence
# rdb_bgsave_in_progress:1
# rdb_last_bgsave_status:ok
# rdb_last_bgsave_time_sec:2
AOF (Append Only File)
Configuración
# valkey.conf
# Activar AOF
appendonly yes
# Nombre del archivo
appendfilename "appendonly.aof"
# Directorio
appenddirname "appendonlydir"
# Política de sync
# always - Cada comando (más lento, más seguro)
# everysec - Cada segundo (balance)
# no - Dejar al OS (más rápido, menos seguro)
appendfsync everysec
# Rewrite automático
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
# No sync durante rewrite
no-appendfsync-on-rewrite no
Comandos AOF
# Forzar rewrite
BGREWRITEAOF
# Info
INFO persistence
# aof_enabled:1
# aof_rewrite_in_progress:0
# aof_current_size:1234
Formato del AOF
*3
$3
SET
$5
clave
$5
valor
Reparar AOF corrupto
valkey-check-aof --fix appendonlydir/appendonly.aof.1.incr.aof
Modo híbrido (RDB + AOF)
La mejor práctica es usar ambos:
# Activar ambos
appendonly yes
save 900 1
save 300 10
# AOF usa formato RDB para el base
aof-use-rdb-preamble yes
Ventajas:
- AOF para durabilidad
- RDB para backups y recuperación rápida
- El AOF rewrite usa formato RDB (más compacto)
Estrategias de Backup
Backup simple
#!/bin/bash
# backup.sh
BACKUP_DIR="/backups/valkey"
DATE=$(date +%Y%m%d_%H%M%S)
# Forzar snapshot
valkey-cli BGSAVE
# Esperar a que termine
while [ $(valkey-cli LASTSAVE) == $(valkey-cli LASTSAVE) ]; do
sleep 1
done
# Copiar archivo
cp /var/lib/valkey/dump.rdb "$BACKUP_DIR/dump_$DATE.rdb"
# Comprimir
gzip "$BACKUP_DIR/dump_$DATE.rdb"
# Limpiar backups viejos (mantener 7 días)
find $BACKUP_DIR -name "*.rdb.gz" -mtime +7 -delete
Backup con AOF
#!/bin/bash
# Copiar directorio AOF completo
tar -czf backup_aof_$(date +%Y%m%d).tar.gz /var/lib/valkey/appendonlydir/
Backup remoto
# Usando rsync
rsync -avz /var/lib/valkey/dump.rdb backup-server:/backups/
# Usando rdb-tools para análisis
pip install rdbtools
rdb --command memory dump.rdb > memory_report.csv
Restauración
Desde RDB
# 1. Detener Valkey
systemctl stop valkey
# 2. Reemplazar dump.rdb
cp /backups/dump.rdb /var/lib/valkey/dump.rdb
chown valkey:valkey /var/lib/valkey/dump.rdb
# 3. Iniciar
systemctl start valkey
# 4. Verificar
valkey-cli DBSIZE
Desde AOF
# 1. Detener Valkey
systemctl stop valkey
# 2. Restaurar directorio AOF
tar -xzf backup_aof.tar.gz -C /var/lib/valkey/
# 3. Verificar integridad
valkey-check-aof /var/lib/valkey/appendonlydir/*.aof
# 4. Iniciar
systemctl start valkey
Monitoreo de Persistencia
# Script de monitoreo
valkey-cli INFO persistence | grep -E "(rdb_|aof_)"
# Alertar si último backup > 24h
LAST_SAVE=$(valkey-cli LASTSAVE)
NOW=$(date +%s)
DIFF=$((NOW - LAST_SAVE))
if [ $DIFF -gt 86400 ]; then
echo "ALERTA: Último backup hace más de 24h"
fi
Recomendaciones por caso de uso
| Caso | RDB | AOF | Configuración |
|---|---|---|---|
| Cache puro | Opcional | No | save "" |
| Sesiones | Sí | Sí (everysec) | Balance |
| Cola de mensajes | Sí | Sí (always) | Máxima durabilidad |
| Analytics | Sí | No | Solo snapshots |
Ejercicios
- Configura RDB con snapshots cada 5 minutos
- Activa AOF y verifica el archivo generado
- Implementa un script de backup automático
Resumen
- RDB: Snapshots periódicos, compactos pero pueden perder datos
- AOF: Log de operaciones, más durable pero más grande
- Híbrido: La mejor práctica para producción
- Backup: Automatizar con scripts y monitorear LASTSAVE