Guia completo para implantar Redis com Docker: persistência e autenticação por senha sem perda de dados

Finalmente, o contêiner Redis estava em execução. Testei algumas APIs, e a leitura e a gravação de dados funcionavam normalmente. No dia seguinte, abri o computador para verificar o status do serviço — todos os dados tinham desaparecido. Foi desanimador.
Talvez você já tenha passado por isso: depois de reiniciar o contêiner Docker, é como se os dados no Redis nunca tivessem existido. As sessões dos usuários somem, os carrinhos de compras são esvaziados e os dados em cache desaparecem. O pior é não saber por que isso acontece nem como resolver.
Para ser sincero, também fiquei bastante preocupado na primeira vez que encontrei esse problema. Era um projeto pequeno, e os dados do ambiente de testes desapareceram de repente. Embora isso não tenha afetado a produção, a sensação de impotência foi muito desagradável. Só depois entendi que o contêiner é, por natureza, “temporário”: ao excluí-lo, os dados desaparecem; ao reiniciá-lo sem persistência configurada, os dados também podem ser perdidos.
Neste artigo, você vai aprender passo a passo a:
- Configurar persistência RDB e AOF para impedir que os dados do Redis sejam perdidos quando o contêiner reiniciar
- Definir autenticação por senha para evitar acessos não autorizados ao Redis (há empresas cujos servidores Redis foram invadidos e usados para mineração de criptomoedas por não terem senha)
- Montar o arquivo de configuração para padronizar a implantação do Redis e facilitar a manutenção
- Aplicar boas práticas de produção, incluindo consulta de logs, verificações de integridade e otimização de desempenho
Seja você desenvolvedor backend, profissional de operações ou iniciante em Docker, ao seguir este guia uma vez será capaz de implantar um contêiner Redis pronto para produção.
Por que o contêiner Redis perde dados?
Vamos começar com uma analogia: um contêiner Docker é como um quarto de hotel. Quando você encerra a hospedagem, tudo o que ficou no quarto é removido. Com o contêiner acontece a mesma coisa — ele é temporário por natureza; se você o excluir, os dados que estavam dentro dele desaparecem.
Por padrão, o Redis armazena os dados no sistema de arquivos interno do contêiner. Quando você grava dados, o Redis os salva em caminhos como /data/dump.rdb ou /data/appendonly.aof. O problema é que esses caminhos ficam dentro do contêiner. Assim que o contêiner é excluído ou recriado, os dados desaparecem junto com ele.
Em um caso real, um desenvolvedor de uma startup implantou Redis com Docker no ambiente de testes sem configurar persistência. Depois que o servidor reiniciou, todas as sessões dos usuários foram perdidas, os estados de login foram apagados e os dados dos carrinhos desapareceram. Embora fosse um ambiente de testes, a experiência fez a equipe perceber que uma implantação em contêiner precisa considerar a persistência dos dados.
Segundo dados estatísticos, cerca de 70% dos problemas de perda de dados em contêineres Redis acontecem porque o armazenamento persistente não foi configurado. Em outras palavras, é uma armadilha em que quase todo mundo cai pelo menos uma vez.
Para que serve um Docker Volume
O volume é a chave para resolver esse problema. É como armazenar arquivos importantes na nuvem em vez de deixá-los apenas no disco local do computador.
Quando você usa o parâmetro -v para montar um diretório do host dentro do contêiner, os dados passam a ficar no host. Se o contêiner for excluído, os dados continuam lá; se ele reiniciar, os dados ainda poderão ser lidos. É por isso que, em produção, é obrigatório montar um volume de dados.
Em resumo:
- Sem volume montado = dados dentro do contêiner = os dados desaparecem quando o contêiner é excluído
- Com volume montado = dados em um diretório do host = os dados continuam lá mesmo após a exclusão do contêiner
Implantação rápida de um contêiner Redis básico
Antes de falar sobre persistência, vamos implantar o contêiner Redis mais simples possível. Assim, você poderá perceber na prática o que significa trabalhar “sem persistência”.
Inicie o contêiner básico
Abra o terminal e execute:
docker run -d --name redis-basic -p 6379:6379 redis:latest
Esse comando faz o seguinte:
-d: executa em segundo plano--name redis-basic: define um nome para o contêiner, facilitando o gerenciamento-p 6379:6379: mapeia a porta 6379 do contêiner para a porta 6379 do hostredis:latest: usa a versão mais recente da imagem Redis
Depois da execução, o Docker baixa automaticamente a imagem do Redis, caso ela ainda não exista localmente, e inicia o contêiner.
Verifique se o contêiner está funcionando
Use docker ps para consultar o status do contêiner:
docker ps
Se o status de redis-basic aparecer como Up, o contêiner está funcionando normalmente.
Em seguida, entre no contêiner para testar se o Redis consegue ler e gravar dados:
docker exec -it redis-basic redis-cli
No terminal do Redis, tente armazenar um valor:
set test "hello"
get test
Se o retorno for "hello", o Redis está funcionando corretamente.
Problemas dessa versão básica
Parece bom, certo? Mas essa configuração tem três problemas graves:
- Os dados não são persistentes: ao reiniciar o contêiner, eles são perdidos
- Não há proteção por senha: qualquer pessoa pode se conectar ao Redis e ler ou gravar dados
- A configuração padrão é usada: não é possível personalizar limites de memória, estratégia de persistência e outros parâmetros
Você pode reiniciar o contêiner e verificar se os dados continuam lá:
docker restart redis-basic
docker exec -it redis-basic redis-cli
get test
É muito provável que você descubra que a chave test armazenada anteriormente desapareceu. Esse é o resultado de não configurar a persistência.
Configuração da persistência RDB (snapshots)
O Redis oferece duas formas de persistência: RDB e AOF. Vamos começar pelo RDB, que é mais simples e adequado para quem está começando.
O que é RDB?
RDB é a sigla de Redis Database e pode ser entendido como um “snapshot do banco de dados”. É como tirar uma foto dos dados na memória do Redis: em intervalos definidos, o Redis salva todos os dados atuais em um arquivo dump.rdb.
A vantagem é a recuperação rápida. A desvantagem é a possibilidade de perder os dados gravados depois do último snapshot. Por exemplo, se você configurar um snapshot a cada cinco minutos, uma falha no Redis poderá causar a perda dos dados dos últimos cinco minutos no pior cenário.
Parâmetros de configuração do RDB
A persistência RDB do Redis é controlada pelos parâmetros save. O formato é:
save <segundos> <quantidade de chaves alteradas>
Por exemplo:
save 900 1: salva um snapshot se pelo menos uma chave for alterada em 900 segundos (15 minutos)save 300 10: salva um snapshot se pelo menos dez chaves forem alteradas em 300 segundos (cinco minutos)save 60 10000: salva um snapshot se pelo menos 10.000 chaves forem alteradas em 60 segundos
Essas três regras usam uma relação “ou”: basta uma delas ser atendida para disparar o salvamento.
Monte um volume de dados para garantir a persistência
Configurar apenas o RDB não basta. Também é preciso montar o volume de dados no host. Dessa forma, mesmo que o contêiner seja excluído, o arquivo dump.rdb continuará no diretório do host.
Primeiro, crie um diretório para os dados:
mkdir -p ~/redis-data
Depois, inicie um contêiner Redis com volume de dados:
docker run -d \
--name redis-rdb \
-p 6379:6379 \
-v ~/redis-data:/data \
redis:latest \
redis-server --save 60 1 --dir /data
Há alguns pontos importantes:
-v ~/redis-data:/data: monta o diretório~/redis-datado host no diretório/datado contêiner--save 60 1: salva um snapshot quando pelo menos uma chave é alterada em 60 segundos (para testes; em produção, você pode aumentar esse intervalo)--dir /data: define o caminho onde o arquivo RDB será salvo
Valide a persistência
Entre no contêiner e armazene alguns dados:
docker exec -it redis-rdb redis-cli
set user:1 "张三"
set user:2 "李四"
Aguarde 60 segundos para que o Redis salve o snapshot. Depois, reinicie o contêiner:
docker restart redis-rdb
Entre novamente no contêiner e verifique se os dados continuam lá:
docker exec -it redis-rdb redis-cli
get user:1
Se o retorno for "张三", parabéns: a persistência foi configurada com sucesso!
Você também pode abrir o diretório ~/redis-data no host. Lá haverá um arquivo dump.rdb, que é o snapshot do Redis.
Configuração da persistência AOF (log somente de acréscimo)
Embora o RDB seja simples, ele tem uma desvantagem: os dados gravados depois do último snapshot podem ser perdidos. Se a sua aplicação exigir maior segurança dos dados, use AOF.
O que é AOF?
AOF significa Append Only File, ou “arquivo somente de acréscimo”. Ele funciona assim: sempre que o Redis executa uma operação de escrita, como set, del ou incr, o comando é adicionado ao arquivo appendonly.aof.
Em uma analogia, o RDB é como tirar fotografias, enquanto o AOF é como gravar um vídeo. O RDB tira uma foto em intervalos definidos, enquanto o AOF registra cada ação em tempo real.
A vantagem é a maior segurança dos dados, com perda máxima de um segundo ao usar a estratégia everysec. A desvantagem é que o arquivo ocupa mais espaço do que o RDB e a recuperação é um pouco mais lenta.
As três estratégias de sincronização do AOF
O AOF oferece três estratégias de sincronização, cada uma com um equilíbrio diferente entre segurança e desempenho:
-
appendfsync always: sincroniza cada operação de escrita imediatamente com o disco
- É a opção mais segura e praticamente não perde dados
- Tem o menor desempenho e não é indicada para cenários de alta concorrência
-
appendfsync everysec: sincroniza uma vez por segundo (recomendado)
- Equilibra desempenho e segurança
- Pode perder, no máximo, um segundo de dados
- É a opção recomendada para produção
-
appendfsync no: deixa o sistema operacional decidir quando sincronizar
- Oferece o maior desempenho
- Pode perder mais dados e não é recomendada
Inicie o Redis com persistência AOF
Como antes, primeiro garanta que o diretório de dados exista:
mkdir -p ~/redis-data
Inicie o contêiner:
docker run -d \
--name redis-aof \
-p 6379:6379 \
-v ~/redis-data:/data \
redis:latest \
redis-server --appendonly yes --appendfsync everysec --dir /data
Parâmetros principais:
--appendonly yes: habilita a persistência AOF--appendfsync everysec: sincroniza uma vez por segundo--dir /data: define o diretório de dados
Depois de algum tempo, consulte o diretório de dados. Você encontrará um arquivo appendonly.aof:
ls ~/redis-data/
Persistência híbrida (recomendada no Redis 4.0+)
Desde o Redis 4.0, o modo de persistência híbrida, que combina as vantagens de RDB e AOF, é recomendado oficialmente:
- O RDB permite uma recuperação rápida
- O AOF protege os dados
Para habilitar esse modo, adicione a seguinte linha ao arquivo de configuração:
aof-use-rdb-preamble yes
A vantagem da persistência híbrida é que, ao reiniciar, o Redis primeiro carrega o snapshot RDB, o que é rápido, e depois reproduz os dados incrementais do log AOF gravados após o RDB, garantindo a integridade dos dados.
Sinceramente, se você usa Redis 4.0 ou uma versão mais recente, pode adotar diretamente a persistência híbrida sem ficar em dúvida entre RDB e AOF.
Gerenciamento do Redis por arquivo de configuração (recomendado para produção)
Até agora, configuramos o Redis com parâmetros de linha de comando, como --appendonly yes --appendfsync everysec. O problema dessa abordagem é que, quando há muitos parâmetros, o comando fica longo, pouco legível e difícil de manter.
Em produção, a prática padrão é gerenciar o Redis com um arquivo de configuração.
Por que usar um arquivo de configuração?
O arquivo de configuração oferece várias vantagens:
- Centraliza todas as configurações e facilita a consulta
- Permite controle de versão, por exemplo, armazenando o arquivo no Git
- Permite que a equipe compartilhe a mesma configuração
- Evita redigitar comandos ao alterar parâmetros
Para ser direto: se o seu Redis vai permanecer em execução por muito tempo, não corte caminho; use um arquivo de configuração.
Obtenha o arquivo de configuração padrão
O Redis fornece um arquivo de configuração padrão, que pode ser copiado do contêiner Docker:
mkdir -p ~/redis-config
docker run --rm redis:latest cat /etc/redis/redis.conf > ~/redis-config/redis.conf
Esse comando salva o arquivo de configuração padrão do Redis em ~/redis-config/redis.conf.
Personalize o arquivo de configuração
Abra redis.conf em um editor de texto, localize os itens abaixo e altere-os:
1. Configuração de rede
# Permite conexões de qualquer IP (em produção, prefira um IP da rede interna)
bind 0.0.0.0
# Desabilita o modo protegido (pode ser desabilitado depois que uma senha for configurada)
protected-mode no
2. Autenticação por senha
# Define a senha de acesso
requirepass YourStrongPassword123
3. Configuração de persistência
# Persistência RDB
save 900 1
save 300 10
save 60 10000
dbfilename dump.rdb
# Persistência AOF
appendonly yes
appendfilename "appendonly.aof"
appendfsync everysec
# Persistência híbrida (Redis 4.0+)
aof-use-rdb-preamble yes
# Diretório de dados
dir /data
4. Limite máximo de memória
# Limita a memória máxima a 512 MB
maxmemory 512mb
# Política de remoção da memória: remove as chaves usadas menos recentemente
maxmemory-policy allkeys-lru
5. Configuração de logs
# Níveis de log: debug, verbose, notice, warning
loglevel notice
# Caminho do arquivo de log (uma string vazia envia a saída para a saída padrão)
logfile ""
Inicie o contêiner com o arquivo de configuração
Depois de editar o arquivo, use o parâmetro -v para montá-lo no contêiner:
docker run -d \
--name redis-prod \
-p 6379:6379 \
-v ~/redis-config/redis.conf:/usr/local/etc/redis/redis.conf \
-v ~/redis-data:/data \
redis:latest \
redis-server /usr/local/etc/redis/redis.conf
Observe o trecho final, redis-server /usr/local/etc/redis/redis.conf. Ele informa ao Redis que o contêiner deve iniciar com o arquivo de configuração especificado.
Verifique se a configuração foi aplicada
Entre no contêiner e consulte os parâmetros:
docker exec -it redis-prod redis-cli -a YourStrongPassword123
config get save
config get appendonly
config get maxmemory
Se os valores retornados forem os mesmos definidos no arquivo, a configuração foi aplicada corretamente.
Configuração da autenticação por senha no Redis (três métodos)
Um caso real: o Redis de uma empresa estava sem senha e diretamente exposto à internet. O servidor foi invadido e transformado em uma máquina de mineração de criptomoedas. Não é brincadeira; isso realmente aconteceu.
Por que é obrigatório definir uma senha?
Por padrão, o Redis não tem senha. Qualquer pessoa pode se conectar e ler ou gravar dados. Se a porta do Redis estiver exposta à internet ou se a rede interna da empresa não for confiável, não usar senha equivale a deixar o serviço totalmente desprotegido.
Em produção, definir uma senha é o mínimo necessário.
Método 1: defina a senha por parâmetro de linha de comando
A forma mais simples é adicionar --requirepass ao iniciar o contêiner:
docker run -d \
--name redis-pwd \
-p 6379:6379 \
redis:latest \
redis-server --requirepass "MyStr0ng#P@ssw0rd"
Esse método serve para testes rápidos, mas não é adequado para produção, pois a senha fica exposta no histórico do terminal.
Método 2: defina a senha no arquivo de configuração (recomendado)
Adicione a seguinte linha ao redis.conf:
requirepass YourStrongPassword123
Depois, monte o arquivo de configuração e inicie o contêiner como explicado anteriormente.
Essa é a prática padrão em produção. A senha fica no arquivo de configuração, não aparece no histórico do terminal e pode ser gerenciada com mais facilidade pela equipe.
Recomendações de complexidade para a senha:
- Pelo menos 16 caracteres
- Letras maiúsculas e minúsculas, números e caracteres especiais
- Não use palavras comuns nem datas de aniversário
Método 3: defina a senha dinamicamente dentro do contêiner
Se o contêiner já estiver em execução e você quiser alterar temporariamente a senha, entre nele e execute:
docker exec -it redis-pwd redis-cli
config set requirepass "NewPassword123"
Observe que essa alteração deixa de valer após a reinicialização. Ela é útil em situações de emergência, mas não para uso permanente.
Conecte-se ao Redis com uma senha
Depois de definir a senha, há duas formas de se conectar ao Redis:
Opção 1: informe a senha diretamente na linha de comando
docker exec -it redis-pwd redis-cli -a "MyStr0ng#P@ssw0rd"
Opção 2: conecte-se primeiro e autentique-se depois
docker exec -it redis-pwd redis-cli
auth MyStr0ng#P@ssw0rd
set test "hello"
Se a senha estiver incorreta, será exibido o erro:
(error) NOAUTH Authentication required.
Nesse caso, basta autenticar novamente com o comando auth.
Configuração da conexão na aplicação
Se a aplicação precisar se conectar ao Redis, lembre-se de incluir a senha na string de conexão:
redis://:YourStrongPassword123@localhost:6379
Ou configure-a no código:
// Exemplo em Node.js
const redis = require('redis');
const client = redis.createClient({
host: 'localhost',
port: 6379,
password: 'YourStrongPassword123'
});
Implantação com Docker Compose (recomendada para equipes)
Até aqui, iniciamos os contêineres com comandos docker run. A desvantagem é que esses comandos são longos e precisam ser digitados novamente a cada execução.
Se você trabalha em equipe ou precisa gerenciar vários contêineres, o Docker Compose é uma opção melhor.
Por que usar Docker Compose?
Vantagens do Docker Compose:
- A configuração fica no arquivo
docker-compose.yml, que pode ser versionado - Inicia tudo com um único comando, sem exigir que você memorize comandos complexos
- Permite que toda a equipe use a mesma configuração e mantenha ambientes consistentes
- Facilita o gerenciamento de vários contêineres, como Redis + MySQL + Nginx
Configuração completa do docker-compose.yml
Crie um arquivo docker-compose.yml:
version: '3.8'
services:
redis:
image: redis:7.2-alpine
container_name: redis-prod
restart: always
ports:
- "6379:6379"
volumes:
- ./redis-config/redis.conf:/usr/local/etc/redis/redis.conf
- ./redis-data:/data
command: redis-server /usr/local/etc/redis/redis.conf
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 10s
timeout: 3s
retries: 3
volumes:
redis-data:
driver: local
Principais configurações:
image: redis:7.2-alpine: usa a versão leve baseada em Alpinerestart: always: reinicia automaticamente o contêiner em caso de falhavolumes: monta o arquivo de configuração e o diretório de dadoshealthcheck: verifica a integridade do Redis a cada dez segundos
Inicie tudo com um único comando
Depois de preparar o arquivo de configuração, execute no mesmo diretório:
docker-compose up -d
-d indica execução em segundo plano. O Docker Compose cria automaticamente a rede, monta o volume de dados e inicia o contêiner.
Consulte o status
docker-compose ps
Consulte os logs
docker-compose logs -f redis
-f mantém a saída dos logs em tempo real, de forma semelhante a tail -f.
Pare o contêiner
docker-compose down
Esse comando interrompe e exclui o contêiner, mas não remove o volume de dados; os dados continuam lá.
Reinicie o contêiner
docker-compose restart redis
Amplie a configuração
Se o projeto tiver outros serviços, você poderá gerenciá-los no mesmo docker-compose.yml:
version: '3.8'
services:
redis:
# Configuração do Redis...
mysql:
image: mysql:8.0
# Configuração do MySQL...
app:
build: .
# Configuração da aplicação...
depends_on:
- redis
- mysql
Dessa forma, ao iniciar o projeto, Redis, MySQL e a aplicação são iniciados juntos, e as dependências também são processadas automaticamente.
Solução de problemas comuns e boas práticas
O contêiner Redis está funcionando, mas você certamente encontrará alguns problemas. Nesta seção, veremos como diagnosticar situações comuns e quais boas práticas aplicar em produção.
Consulte os logs do Redis
Quando houver um problema, a primeira reação deve ser consultar os logs.
Veja as últimas 100 linhas:
docker logs --tail 100 redis-prod
Acompanhe os logs em tempo real, como em tail -f:
docker logs -f redis-prod
Se você usa Docker Compose:
docker-compose logs -f redis
Os logs informam se o contêiner iniciou corretamente, se há erros no arquivo de configuração e se ocorreram conexões anormais.
Verificação de integridade do contêiner
A verificação de integridade permite que o Docker detecte automaticamente se o Redis está funcionando. Em caso de anomalia, o contêiner é reiniciado automaticamente.
Adicione ao docker-compose.yml:
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 10s
timeout: 3s
retries: 3
Isso executa redis-cli ping a cada dez segundos. Se três tentativas consecutivas falharem, o contêiner será marcado como não íntegro.
Se restart: always estiver configurado, um contêiner não íntegro será reiniciado automaticamente.
Recomendações de otimização de desempenho
1. Limite a memória máxima
Por padrão, o Redis usa toda a memória disponível. Em produção, é obrigatório definir um limite:
maxmemory 512mb
maxmemory-policy allkeys-lru
allkeys-lru significa que, quando a memória estiver cheia, as chaves usadas menos recentemente serão removidas.
2. Desabilite comandos perigosos
Alguns comandos são perigosos em produção, por exemplo:
FLUSHALL: apaga todos os dadosFLUSHDB: apaga o banco de dados atualKEYS *: lista todas as chaves e pode bloquear o Redis
Você pode desabilitá-los no arquivo de configuração:
rename-command FLUSHALL ""
rename-command FLUSHDB ""
rename-command KEYS ""
3. Ajuste a frequência da persistência
Se o volume de gravações for muito alto, você poderá aumentar o intervalo entre snapshots RDB:
save 900 1
save 300 10
save 60 10000
Essa é a configuração padrão e atende à maioria dos cenários. Se o Redis for usado principalmente como cache e a perda de dados não for crítica, você poderá usar intervalos menos frequentes.
Recomendações de segurança
1. Não exponha o Redis à internet
O Redis não deve ficar diretamente exposto à internet. Se o acesso remoto for indispensável, use um túnel SSH ou uma VPN.
No arquivo de configuração, vincule o serviço a IPs da rede interna:
bind 127.0.0.1 192.168.1.100
2. Use uma senha forte
A senha deve ter pelo menos 16 caracteres e incluir letras maiúsculas e minúsculas, números e caracteres especiais:
requirepass Th1s!sA$tr0ngP@ssw0rd2024
3. Faça backups periódicos
Mesmo com a persistência configurada, ainda é preciso fazer backups. Crie um script agendado que copie dump.rdb e appendonly.aof para um diretório de backup todas as madrugadas:
#!/bin/bash
DATE=$(date +%Y%m%d)
cp ~/redis-data/dump.rdb ~/redis-backup/dump-$DATE.rdb
cp ~/redis-data/appendonly.aof ~/redis-backup/appendonly-$DATE.aof
Checklist para produção
Antes de implantar o Redis, confira esta lista:
- ✅ A persistência foi configurada (o modo híbrido RDB + AOF é recomendado)
- ✅ A autenticação por senha foi habilitada
- ✅ O volume de dados foi montado em um diretório do host
- ✅ O arquivo de configuração foi personalizado, sem depender apenas da configuração padrão
- ✅ Os logs podem ser consultados normalmente
- ✅ A verificação de integridade foi configurada
- ✅ A memória máxima foi limitada
- ✅ Os comandos perigosos foram desabilitados ou renomeados
- ✅ Uma estratégia de backup periódico foi definida
- ✅ O Redis não está exposto à internet, ou o acesso usa VPN/túnel SSH
Monitore o desempenho do Redis
Entre no contêiner para consultar o uso de memória:
docker exec -it redis-prod redis-cli -a your_password
info memory
Consulte o status da persistência:
info persistence
Consulte o número de conexões:
info clients
Se você seguiu o artigo até aqui, já deve ter implantado com sucesso um contêiner Redis pronto para produção. Os dados estão persistentes, a autenticação por senha está ativa e a configuração foi padronizada.
Conclusão
Voltando ao cenário inicial: o Redis foi implantado na sexta à noite e, na segunda de manhã, todos os dados tinham desaparecido. Agora você sabe o motivo — a persistência não foi configurada, os dados ficaram dentro do contêiner e desapareceram na reinicialização.
Este artigo apresentou a solução completa:
- Persistência por snapshots RDB: salva os dados periodicamente, oferece recuperação rápida e é adequada para backups
- Persistência por log AOF: registra as operações de escrita em tempo real, oferece maior segurança e perde, no máximo, um segundo de dados
- Persistência híbrida (recomendada): combina as vantagens de RDB e AOF para oferecer recuperação rápida e segurança dos dados
- Autenticação por senha: três formas de configuração, obrigatória em produção
- Gerenciamento por arquivo de configuração: padroniza a implantação e facilita a manutenção e a colaboração da equipe
- Docker Compose: inicia tudo com um comando e transforma a configuração em código
Se você já usa Redis com Docker, verifique agora:
- O volume de dados foi montado? (
-v ~/redis-data:/data) - A persistência foi habilitada? (RDB, AOF ou modo híbrido)
- Uma senha foi definida? (
requirepass) - O arquivo de configuração foi personalizado? (Não dependa apenas da configuração padrão.)
Esses quatro itens são o mínimo para implantar Redis em produção. Com eles, você evita a perda de dados e acessos não autorizados.
Por fim, salve este artigo para consultar na próxima implantação do Redis. Se sua equipe também usa Docker para implantar Redis, compartilhe o guia para padronizar a configuração e reduzir a chance de repetir esses problemas.
As configurações deste artigo se baseiam no Redis 7.x. Se você usa outra versão, consulte a documentação oficial do Redis para confirmar se houve alterações nos parâmetros.
Processo completo para implantar Redis com Docker
Configure persistência RDB/AOF e autenticação por senha para evitar perda de dados ao reiniciar o contêiner, em uma implantação adequada para produção.
⏱️ Estimated time: 30 min
- 1
Step 1: Implantação básica: montagem do volume e configuração da persistência
Crie um volume e monte o diretório de dados:
• docker run -d -v redis-data:/data redis:7.0
• Os dados ficam armazenados no volume e não são perdidos quando o contêiner é excluído
Configure a persistência RDB:
• Defina os parâmetros save no redis.conf
• save 900 1 (pelo menos 1 chave alterada em 900 segundos)
• save 300 10 (pelo menos 10 chaves alteradas em 300 segundos)
• save 60 10000 (pelo menos 10.000 chaves alteradas em 60 segundos)
• Salve os dados em snapshots periódicos
Configure a persistência AOF:
• Defina appendonly yes no redis.conf
• Registre cada operação de escrita para aumentar a segurança dos dados
Modo híbrido:
• Habilite RDB e AOF ao mesmo tempo (recomendado para produção)
• Combine recuperação rápida e segurança dos dados - 2
Step 2: Configuração da autenticação por senha
Defina o parâmetro requirepass no redis.conf:
• requirepass yourpassword
Passe a senha por uma variável de ambiente:
• docker run -e REDIS_PASSWORD=yourpassword
Configure a senha com docker-compose:
• environment:
REDIS_PASSWORD: yourpassword
Evite acessos não autorizados
Valide a autenticação por senha:
• Ao se conectar com redis-cli, informe a senha: redis-cli -a yourpassword
• Ou autentique-se com o comando AUTH - 3
Step 3: Checklist de produção e estratégia de backup
Checklist para implantação em produção:
1. O volume de dados foi montado (-v ~/redis-data:/data)?
2. A persistência foi habilitada (RDB, AOF ou modo híbrido)?
3. Uma senha foi definida (requirepass)?
4. O arquivo de configuração foi personalizado (sem usar apenas a configuração padrão)?
Estratégia de backup:
• Faça backups periódicos dos dados do volume
• Use o comando redis-cli --rdb para exportar o arquivo RDB
• Configure um script de backup automático
• Use docker-compose para gerenciar vários contêineres
• Configure uma verificação de integridade
Esses quatro itens são o mínimo para implantar Redis em produção. Com eles, você evita a perda de dados e acessos não autorizados.
FAQ
Como evitar perda de dados ao implantar Redis com Docker?
• RDB (snapshots periódicos, configurados pelos parâmetros save)
• AOF (registro de cada operação de escrita, configurado com appendonly yes)
• Modo híbrido (RDB + AOF, recomendado para produção)
• Montagem do diretório de dados em um volume (docker run -v redis-data:/data)
Origem do problema: os dados desaparecem quando o contêiner reinicia porque, por padrão, o Redis não habilita persistência e mantém os dados apenas na memória. Quando o contêiner é excluído, os dados desaparecem junto com ele; por isso, é necessário configurar RDB ou AOF.
Etapas completas: criar um volume e montar o diretório de dados → configurar o redis.conf para habilitar a persistência → configurar a autenticação por senha → iniciar o contêiner Redis → validar a persistência e a autenticação → configurar uma estratégia de backup.
Como configurar a persistência do Redis?
• Defina os parâmetros save no redis.conf
• save 900 1 (pelo menos 1 chave alterada em 900 segundos)
• save 300 10 (pelo menos 10 chaves alteradas em 300 segundos)
• save 60 10000 (pelo menos 10.000 chaves alteradas em 60 segundos)
• Salve os dados em snapshots periódicos
Configure a persistência AOF:
• Defina appendonly yes no redis.conf
• Registre cada operação de escrita para aumentar a segurança dos dados
Modo híbrido: habilite RDB e AOF ao mesmo tempo (recomendado para produção) para combinar recuperação rápida e segurança dos dados.
Montagem do volume: docker run -d -v redis-data:/data redis:7.0. Os dados ficam armazenados no volume e não são perdidos quando o contêiner é excluído.
Como configurar a autenticação por senha no Redis?
• requirepass yourpassword
Passe a senha por uma variável de ambiente:
• docker run -e REDIS_PASSWORD=yourpassword
Configure a senha com docker-compose:
• environment:
REDIS_PASSWORD: yourpassword
Isso evita acessos não autorizados.
Valide a autenticação por senha:
• Ao se conectar com redis-cli, informe a senha: redis-cli -a yourpassword
• Ou autentique-se com o comando AUTH
Quais cuidados são necessários ao implantar Redis em produção?
1) O volume de dados foi montado (-v ~/redis-data:/data)?
2) A persistência foi habilitada (RDB, AOF ou modo híbrido)?
3) Uma senha foi definida (requirepass)?
4) O arquivo de configuração foi personalizado (sem usar apenas a configuração padrão)?
Estratégia de backup:
• Faça backups periódicos dos dados do volume
• Use o comando redis-cli --rdb para exportar o arquivo RDB
• Configure um script de backup automático
• Use docker-compose para gerenciar vários contêineres
• Configure uma verificação de integridade
Esses quatro itens são o mínimo para implantar Redis em produção. Com eles, você evita a perda de dados e acessos não autorizados.
19 min de leitura · Publicado em: 17 dez 2025 · Atualizado em: 4 set 2026
Guia prático Docker
Se você chegou pela busca, o caminho mais rápido é ir para o post anterior ou próximo desta série.
Anterior
Guia de mirrors do Docker na China em 2026: resolva o timeout no pull em 5 minutos
Como avaliar os mirrors do Docker disponíveis na China em 2026: configure o daemon.json, teste a velocidade, trate proxies corporativos e pull-through cache e diferencie o limite do Docker Hub (429) de uma falha no mirror para diagnosticar um timeout no docker pull em 5 minutos.
Parte 22 de 34
Próximo
Como implantar MySQL com Docker: persistência e replicação
Implante MySQL com Docker usando volumes, Docker Compose e replicação. Resolva falhas de conexão e aplique segurança, backups e limites de recursos em produção.
Parte 24 de 34



Comentários
Entre com GitHub para comentar