Persistência do Redis
Redis armazena dados em memória. A persistência salva esses dados no disco. Esta lição aborda métodos de persistência RDB e AOF.
Por que Persistência?
Redis é um banco de dados em memória:
- Problema: Reinicialização ou falha do servidor causa perda de dados na memória
- Solução: Persistência salva dados da memória no disco para recuperação após reinicialização
Dados na Memória → Persistência → Arquivo em Disco
Arquivo em Disco → Recuperação → Dados na Memória
Redis fornece dois métodos de persistência:
- RDB: Snapshot — salva dados em um ponto no tempo
- AOF: Log — registra toda operação de escrita
Persistência RDB
O que é RDB?
RDB (Redis Database) salva dados em um ponto específico no tempo como um arquivo binário de snapshot.
Características:
- Salva dados completos em um ponto no tempo
- Arquivo compacto, adequado para backup e transferência
- Velocidade de recuperação rápida
- Pode perder dados após o último snapshot
Configuração RDB
Configure em redis.conf:
# Condições de disparo de snapshot
# save <segundos> <alterações>
save 900 1 # Pelo menos 1 alteração em 900 segundos → dispara snapshot
save 300 10 # Pelo menos 10 alterações em 300 segundos → dispara snapshot
save 60 10000 # Pelo menos 10000 alterações em 60 segundos → dispara snapshot
# Desabilitar RDB (comentar save ou definir como vazio)
# save ""
# Nome do arquivo RDB
dbfilename dump.rdb
# Diretório de armazenamento do arquivo RDB
dir /var/lib/redis
# Compressão RDB (recomendado manter ativado)
rdbcompression yes
# Checksum RDB (recomendado manter ativado)
rdbchecksum yes
Disparo Manual de RDB
# SAVE: snapshot bloqueante (use com cuidado em produção)
SAVE
OK # Snapshot completo, Redis foi bloqueado durante este tempo
# BGSAVE: snapshot em segundo plano (recomendado)
BGSAVE
Background saving started # Retorna imediatamente, executa em segundo plano
Local do Arquivo RDB
# Local padrão
/var/lib/redis/dump.rdb
# Ou diretório especificado na configuração
dir /data/redis
dbfilename dump.rdb
Recuperação RDB
Redis carrega automaticamente o arquivo RDB na inicialização:
# 1. Coloque o arquivo RDB no diretório configurado
cp dump.rdb /var/lib/redis/
# 2. Inicie o Redis
redis-server
# Redis carrega automaticamente dump.rdb para recuperar dados
Prós e Contras do RDB
Prós:
- Arquivo compacto, adequado para backup
- Velocidade de recuperação rápida
- Impacto mínimo no desempenho (BGSAVE em segundo plano)
Contras:
- Pode perder dados após o último snapshot
- Perda de dados dentro dos intervalos de snapshot
- Snapshots de dados grandes levam mais tempo
Persistência AOF
O que é AOF?
AOF (Append Only File) registra todo comando de escrita. Na recuperação, Redis reexecuta esses comandos.
Características:
- Registra toda operação de escrita, dados mais seguros
- Arquivo legível por humanos, fácil de analisar e reparar
- Possível inchaço de dados (precisa de reescrita)
- Velocidade de recuperação mais lenta
Configuração AOF
# Habilitar AOF
appendonly yes
# Nome do arquivo AOF
appendfilename "appendonly.aof"
# Estratégia de sincronização AOF
appendfsync everysec
# Desabilitar fsync durante reescrita AOF
no-appendfsync-on-rewrite no
# Tamanho do arquivo AOF dispara reescrita
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
Estratégias de Sincronização AOF
| Estratégia | Descrição | Desempenho | Segurança |
|---|---|---|---|
| always | Sincronizar em cada escrita | Mais lento | Mais seguro |
| everysec | Sincronizar uma vez por segundo | Moderado | Razoavelmente seguro (máx. 1 segundo de perda) |
| no | Deixar o SO decidir | Mais rápido | Menos seguro |
appendfsync everysec — equilibra desempenho e segurança.
Reescrita AOF
O arquivo AOF cresce continuamente. A reescrita o compacta:
# Disparar manualmente a reescrita AOF
BGREWRITEAOF
Background append only file rewriting started
Princípio da reescrita:
- Ler dados atuais na memória
- Gerar o conjunto mínimo de comandos para restaurar esses dados
- Substituir o arquivo AOF antigo
Condições de disparo da reescrita:
# Tamanho do arquivo AOF cresceu 100% desde a última reescrita
auto-aof-rewrite-percentage 100
# Arquivo AOF deve ter pelo menos 64MB para disparar reescrita
auto-aof-rewrite-min-size 64mb
Recuperação AOF
Redis carrega automaticamente o arquivo AOF na inicialização:
# 1. Coloque o arquivo AOF no diretório configurado
cp appendonly.aof /var/lib/redis/
# 2. Inicie o Redis
redis-server
# Redis carrega automaticamente appendonly.aof para recuperar dados
Reparo de Arquivo AOF
# Verificar arquivo AOF
redis-check-aof appendonly.aof
# Reparar arquivo AOF
redis-check-aof --fix appendonly.aof
Prós e Contras do AOF
Prós:
- Dados mais seguros, no máximo 1 segundo de perda de dados
- Arquivo legível por humanos, fácil de analisar
- Suporta reparo de arquivos corrompidos
Contras:
- Tamanho de arquivo maior
- Velocidade de recuperação mais lenta
- Algum impacto no desempenho
RDB vs AOF Comparação
| Aspecto | RDB | AOF |
|---|---|---|
| Tamanho do arquivo | Pequeno (binário compacto) | Grande (comandos de texto) |
| Velocidade de recuperação | Rápida | Lenta |
| Segurança dos dados | Pode perder minutos de dados | No máximo 1 segundo perdido |
| Impacto no desempenho | Baixo (snapshot em segundo plano) | Médio (fsync frequente) |
| Legibilidade do arquivo | Não legível | Legível |
| Caso de uso | Backup, replicação | Altos requisitos de segurança de dados |
Persistência Híbrida
Redis 4.0+ suporta persistência híbrida, combinando os benefícios de RDB e AOF.
Configurando Persistência Híbrida
# Habilitar AOF
appendonly yes
# Habilitar persistência híbrida
aof-use-rdb-preamble yes
Princípio da Persistência Híbrida
Durante a reescrita AOF:
- Primeiro escreve dados atuais em formato RDB (rápido, compacto)
- Depois anexa novas operações de escrita em formato AOF
Estrutura do arquivo AOF:
[Dados de snapshot em formato RDB] + [Comandos incrementais em formato AOF]
Vantagens da Persistência Híbrida
- Recuperação rápida (parte RDB)
- Dados seguros (parte AOF)
- Tamanho de arquivo moderado
Melhores Práticas de Persistência
Cenário 1: Apenas Cache
# Cache pode não precisar de persistência, ou apenas RDB
save 900 1
appendonly no
Cenário 2: Armazenamento de Dados
# Armazenamento de dados usa AOF ou persistência híbrida
save 900 1
appendonly yes
appendfsync everysec
aof-use-rdb-preamble yes
Cenário 3: Alta Disponibilidade
# Habilitar ambos RDB e AOF
save 900 1
save 300 10
appendonly yes
appendfsync everysec
aof-use-rdb-preamble yes
Estratégia de Backup
# Fazer backup regular de arquivos RDB e AOF
# 1. Usar cron para copiar arquivos
0 2 * * * cp /var/lib/redis/dump.rdb /backup/dump-$(date +\%Y\%m\%d).rdb
0 2 * * * cp /var/lib/redis/appendonly.aof /backup/aof-$(date +\%Y\%m\%d).aof
# 2. Criar um snapshot com BGSAVE e depois fazer backup
redis-cli BGSAVE
sleep 10 # Aguardar snapshot concluir
cp /var/lib/redis/dump.rdb /backup/
Estratégia de Recuperação
# Se ambos RDB e AOF existirem, Redis prefere AOF
# 1. Parar Redis
redis-cli SHUTDOWN NOSAVE
# 2. Restaurar arquivo
cp /backup/appendonly.aof /var/lib/redis/
# 3. Iniciar Redis
redis-server
Monitoramento de Persistência
Verificando Status da Persistência
# Visualizar status RDB
INFO persistence
# Métricas principais:
# rdb_last_save_time: Último horário de snapshot
# rdb_changes_since_last_save: Alterações desde o último snapshot
# aof_enabled: Se AOF está habilitado
# aof_rewrite_in_progress: Reescrita AOF em andamento
Monitorando Desempenho da Persistência
# Monitorar duração do snapshot RDB
redis-cli INFO persistence | grep rdb_last_bgsave_time_sec
# Monitorar duração da reescrita AOF
redis-cli INFO persistence | grep aof_last_rewrite_time_sec
❓ Perguntas Frequentes
📖 Resumo
- RDB é um snapshot — salva dados em um ponto no tempo
- AOF é um log — registra toda operação de escrita
- RDB tem recuperação rápida e arquivos pequenos, mas pode perder dados
- AOF é mais seguro, mas tem arquivos maiores e recuperação mais lenta
- Persistência híbrida combina os benefícios de ambos (Redis 4.0+)
- Use RDB para cache, AOF ou híbrido para armazenamento de dados
- Faça backup regular de arquivos de persistência e monitore o desempenho
📝 Atividades
- Configuração RDB: Configure condições automáticas de snapshot RDB, dispare manualmente BGSAVE
- Configuração AOF: Habilite AOF, teste diferenças de desempenho entre estratégias de sincronização
- Reescrita AOF: Dispare reescrita AOF e observe mudanças no tamanho do arquivo
- Recuperação de dados: Faça backup de arquivos RDB/AOF e simule a recuperação de dados
Próxima Lição
Na próxima lição, nós aprenderemos sobre Segurança do Redis, abordando configuração de segurança e controle de acesso.



