Redis é um armazenamento de dados de alto desempenho em memória, utilizado para cache, sessões de usuários, filas de tarefas, contadores, dados temporários, bloqueios distribuídos e processamento de eventos em tempo real.
Ao contrário de um banco de dados relacional tradicional, o Redis armazena informações no formato chave-valor e oferece suporte a diferentes estruturas de dados, incluindo strings, listas, conjuntos, conjuntos ordenados, hashes, streams e outros tipos.
O Redis geralmente é implantado ao lado da aplicação principal e do banco de dados. Por exemplo, um serviço web pode manter os dados permanentes no PostgreSQL e utilizar o Redis para cache, sessões, limitação de solicitações e filas de tarefas em segundo plano.
Neste tutorial, mostraremos como implantar o Redis pelo painel da Serverspace, conectar-se ao servidor, verificar o serviço, utilizar o redis-cli, configurar ACL e autenticação, habilitar acesso remoto seguro, gerenciar memória e TTL, configurar persistência RDB e AOF, criar backups, monitorar o servidor, configurar replicação, Redis Sentinel, Redis Cluster e solucionar problemas comuns.
O que é Redis?
Redis é um armazenamento de dados executado no servidor que mantém seu conjunto de dados ativo principalmente na memória RAM.
Entre os principais recursos do Redis estão:
- armazenamento de dados no formato chave-valor;
- suporte a diferentes estruturas de dados;
- expiração automática de chaves;
- execução atômica de comandos;
- transações;
- mensagens no modelo publicação e assinatura;
- streams de eventos;
- replicação;
- failover automático por meio do Sentinel;
- escalabilidade horizontal pelo Redis Cluster;
- persistência em disco;
- restrição de acesso por ACL;
- criptografia TLS quando suportada pela compilação e configuração utilizadas.
O Redis pode ser utilizado como:
- cache;
- armazenamento temporário de alta velocidade;
- broker de mensagens;
- armazenamento de sessões;
- sistema de contadores;
- fila de tarefas;
- backend para rankings;
- componente de rate limiting;
- coordenador de bloqueios distribuídos;
- backend para funcionalidades em tempo real.
Principais casos de uso do Redis
O Redis é especialmente útil quando a aplicação exige acesso aos dados com baixa latência.
Entre os cenários mais comuns estão:
- cache de resultados de consultas ao banco de dados;
- armazenamento de fragmentos HTML e respostas de APIs;
- sessões de usuários;
- códigos de verificação de uso único;
- carrinhos de compras;
- contadores de visualizações e atividades;
- limitação da quantidade de solicitações;
- tabelas de classificação;
- filas de tarefas em segundo plano;
- distribuição de eventos entre serviços;
- bloqueios distribuídos;
- tokens temporários;
- armazenamento de estado para jogos e serviços em tempo real.
Quando o Redis não substitui o banco de dados principal
O Redis nem sempre deve ser utilizado como o único armazenamento permanente da aplicação.
Normalmente, um banco de dados separado continua sendo necessário quando o projeto exige:
- consultas SQL complexas;
- relacionamentos entre tabelas;
- modelo relacional rígido;
- armazenamento de longo prazo de dados críticos;
- análises avançadas;
- transações complexas entre entidades;
- conjunto de dados maior que a RAM disponível;
- auditoria e consultas históricas.
Na maioria das aplicações web, o Redis complementa o PostgreSQL, MySQL ou outro banco de dados persistente, em vez de substituí-lo.
Estruturas de dados do Redis
O Redis oferece suporte a diferentes tipos de dados.
| Tipo | Exemplo de uso |
|---|---|
| String | Cache, tokens, contadores e valores JSON |
| Hash | Objetos de usuários, configurações e registros de produtos |
| List | Filas, logs de eventos e sequências ordenadas |
| Set | Valores únicos, tags e participantes de grupos |
| Sorted Set | Rankings, filas de prioridade e linhas do tempo |
| Stream | Streams de eventos e filas com grupos de consumidores |
| Bitmap | Flags, controle de presença e estados booleanos compactos |
| HyperLogLog | Contagem aproximada de elementos únicos |
A estrutura selecionada influencia o consumo de memória e a complexidade das operações.
Como o Redis armazena os dados
O conjunto de dados ativo do Redis permanece na memória RAM.
Isso oferece baixa latência, mas exige que o administrador considere:
- a quantidade de memória disponível;
- a política de remoção de chaves;
- a persistência em disco;
- as reinicializações do servidor;
- a replicação;
- os backups;
- o comportamento quando a memória é esgotada.
O Redis pode:
- criar snapshots RDB periódicos;
- registrar as alterações em um arquivo AOF;
- utilizar RDB e AOF simultaneamente;
- desabilitar a persistência em disco quando for utilizado apenas como cache reconstruível.
Redis Open Source e Redis Stack
Ao escolher uma implantação, é importante diferenciar o servidor Redis básico das distribuições com recursos adicionais.
O Redis padrão é adequado para:
- cache;
- sessões;
- filas;
- contadores;
- Pub/Sub;
- Streams;
- replicação e clusterização.
O Redis Stack pode incluir recursos adicionais para:
- documentos JSON;
- pesquisa de texto completo;
- pesquisa vetorial;
- dados de séries temporais;
- estruturas de dados probabilísticas.
Antes da implantação, verifique qual distribuição do Redis está incluída na imagem da Serverspace.
Recursos recomendados para a VPS
Os requisitos do Redis dependem principalmente da quantidade de dados armazenados na memória e do volume de solicitações.
Para testes, você pode começar com:
- 1 vCPU;
- 1 GB de RAM;
- 10–20 GB de armazenamento SSD ou NVMe;
- endereço IP público ou privado estático.
Para um pequeno projeto em produção, considere:
- 2 vCPUs;
- 4 GB de RAM;
- 20–40 GB de armazenamento NVMe;
- armazenamento separado para backups;
- rede privada entre a aplicação e o Redis.
Aumente os recursos quando:
- um grande volume de dados estiver armazenado na memória;
- o AOF estiver habilitado;
- snapshots RDB forem criados com frequência;
- o servidor processar muitas operações de escrita;
- forem utilizadas várias réplicas;
- os Streams armazenarem muitos eventos;
- forem armazenados valores grandes;
- o Redis Stack estiver em uso;
- muitos clientes se conectarem simultaneamente.
Como estimar a quantidade necessária de RAM
O tamanho dos dados originais não é igual ao consumo real de memória do Redis.
Memória adicional é utilizada por:
- estruturas internas do Redis;
- metadados das chaves;
- fragmentação da memória;
- buffers dos clientes;
- buffers de replicação;
- reescrita do AOF;
- snapshots RDB criados com fork;
- operações temporárias;
- sistema operacional.
Não defina maxmemory com o valor total da RAM disponível no servidor.
Reserve capacidade para:
- kernel do Linux;
- serviços em segundo plano;
- operações fork durante a criação de snapshots;
- buffers de replicação;
- reescrita do AOF;
- picos temporários de carga.
Portas de rede do Redis
O Redis utiliza a porta TCP 6379 por padrão.
Modos adicionais podem exigir outras portas.
| Porta | Finalidade | Recomendação |
|---|---|---|
| 6379/TCP | Conexões dos clientes Redis | Permitir somente endereços confiáveis ou redes privadas |
| 16379/TCP | Cluster bus quando a porta do cliente é 6379 | Permitir somente entre os nós do cluster |
| 26379/TCP | Redis Sentinel | Permitir aplicações e outros nós Sentinel |
| 22/TCP | Administração por SSH | Restringir aos endereços IP dos administradores |
Não exponha o Redis em `0.0.0.0:6379` para toda a internet.
Como implantar o Redis pela Serverspace
O Redis está disponível no catálogo de aplicativos prontos da Serverspace.
A implantação por meio dos 1-Click Apps fornece uma VPS com o Redis instalado, eliminando a necessidade de preparar manualmente os pacotes e serviços do sistema.
Etapa 1. Inicie a criação do servidor
Entre no painel da Serverspace, abra a seção vStack cloud e clique em Criar servidor.

O assistente de configuração da máquina virtual será aberto.
Etapa 2. Selecione o Redis
Abra a guia Aplicativos ou 1-Click Apps.
Localize Redis e selecione o aplicativo.

Etapa 3. Escolha o data center
Implante o Redis próximo da aplicação que irá utilizá-lo.
Ao selecionar uma região, considere:
- a latência entre a aplicação e o Redis;
- a localização do banco de dados principal;
- a região dos outros serviços backend;
- os requisitos de localização dos dados;
- a localização do armazenamento de backup.
Mesmo um pequeno aumento na latência da rede pode se tornar perceptível quando a aplicação realiza muitas solicitações sequenciais ao Redis.
Etapa 4. Configure os recursos
Selecione:
- quantidade de vCPUs;
- volume de RAM;
- tamanho do disco;
- largura de banda;
- nome do servidor.
Exemplos:
redis-cache-01ou:
redis-production-primaryEtapa 5. Configure o acesso SSH
Defina uma senha de root ou adicione uma chave pública SSH.
Em produção, utilize autenticação por chave SSH.
Não armazene a chave privada:
- dentro do diretório da aplicação;
- em um repositório público;
- na configuração de um contêiner;
- em um backup não criptografado;
- em um documento de acesso público.
Etapa 6. Implante o servidor
Revise a configuração e inicie a implantação.
A Serverspace irá:
- alocar os recursos selecionados;
- criar um disco virtual;
- atribuir um endereço IP;
- instalar o sistema operacional;
- implantar o Redis;
- iniciar os serviços necessários;
- preparar o servidor para conexões.
Aguarde até que o status da VPS seja alterado para Ativo.
Como se conectar ao servidor via SSH
Copie o endereço IP da VPS no painel da Serverspace.
Conecte-se:
ssh root@YOUR_SERVER_IPDurante a primeira conexão, confira a impressão digital do host e confirme:
yesDigite a senha ou utilize a chave privada SSH.
Como verificar o serviço do Redis
O nome do serviço systemd depende da distribuição Linux e da imagem utilizada.
Verifique:
systemctl status redisCaso o serviço não seja encontrado:
systemctl status redis-serverListe os serviços Redis ativos:
systemctl list-units --type=service | grep -i redisConfira o processo:
ps aux | grep redis-serverVerifique a porta:
ss -lntp | grep 6379Como testar o Redis com redis-cli
Conecte-se localmente:
redis-cliExecute:
PINGResposta esperada:
PONGTambém é possível testar o Redis com um único comando:
redis-cli PINGQuando a autenticação estiver habilitada:
redis-cli --user default --pass 'STRONG_PASSWORD' PINGUma senha fornecida como argumento pode aparecer no histórico do shell e na lista de processos. Para uso regular, prefira variáveis de ambiente protegidas, configurações da aplicação, URIs de conexão ou autenticação interativa.
Comandos básicos do redis-cli
Crie uma chave:
SET project:status activeRecupere o valor:
GET project:status
Verifique se a chave existe:
EXISTS project:status
Exclua a chave:
DEL project:status
Crie um contador:
SET page:views 0
INCR page:views
INCR page:views
GET page:views
Crie uma chave com tempo de expiração:
SET verification:code 482193 EX 300
Verifique o tempo restante:
TTL verification:code
Como trabalhar com hashes
Crie um objeto de usuário:
HSET user:1001 name "Alex" email "[alex@example.com](mailto:alex@example.com)" plan "pro"
Recupere um campo:
HGET user:1001 emailRecupere o objeto completo:
HGETALL user:1001Atualize um campo:
HSET user:1001 plan "business"Exclua um campo:
HDEL user:1001 emailComo trabalhar com listas
Adicione tarefas:
LPUSH jobs:email "task-1"
LPUSH jobs:email "task-2"Exiba a lista:
LRANGE jobs:email 0 -1Recupere uma tarefa:
RPOP jobs:email
Em filas de produção, considere confirmação de processamento, novas tentativas e falhas dos processos worker.
Como trabalhar com conjuntos
Adicione valores únicos:
SADD article:100:tags redis cache linux
Recupere os elementos:
SMEMBERS article:100:tags
Verifique se um elemento existe:
SISMEMBER article:100:tags redis
Remova um elemento:
SREM article:100:tags linuxComo trabalhar com conjuntos ordenados
Crie uma tabela de classificação:
ZADD game:leaderboard 1200 alice
ZADD game:leaderboard 950 bob
ZADD game:leaderboard 1730 carolExiba a classificação em ordem decrescente:
ZREVRANGE game:leaderboard 0 -1 WITHSCORESAumente uma pontuação:
ZINCRBY game:leaderboard 100 aliceComo trabalhar com Streams
Adicione um evento:
XADD events:orders * order_id 5001 status createdLeia o stream:
XRANGE events:orders - +Crie um grupo de consumidores:
XGROUP CREATE events:orders workers 0 MKSTREAMLeia um evento como consumidor:
XREADGROUP GROUP workers worker-1 COUNT 10 BLOCK 5000 STREAMS events:orders >Confirme o evento após o processamento:
XACK events:orders workers EVENT_IDLocalização do arquivo de configuração do Redis
O caminho depende do sistema operacional e do método de instalação.
Os locais mais comuns são:
/etc/redis/redis.confou:
/etc/redis.confLocalize o arquivo:
find /etc -name "redis*.conf" 2>/dev/nullConfira os argumentos do processo:
ps aux | grep redis-serverCrie uma cópia antes da edição:
cp /etc/redis/redis.conf /etc/redis/redis.conf.backupDepois das alterações, valide a configuração e reinicie o serviço.
Como configurar o bind
O parâmetro bind determina em quais interfaces de rede o Redis aceita conexões.
Para acesso local:
bind 127.0.0.1 -::1Quando a aplicação estiver em outro servidor da rede privada:
bind 127.0.0.1 PRIVATE_REDIS_IPNão utilize:
bind 0.0.0.0sem firewall, ACL, autenticação e uma arquitetura de rede cuidadosamente planejada.
Protected mode
O protected mode ajuda a impedir que o Redis seja exposto acidentalmente sem autenticação.
Valor recomendado:
protected-mode yesO protected mode não substitui:
- firewall;
- rede privada;
- ACL;
- senhas fortes;
- TLS;
- segmentação de rede.
Como configurar ACL no Redis
As ACLs permitem criar usuários Redis e restringir:
- comandos disponíveis;
- padrões de chaves;
- canais Pub/Sub;
- senhas;
- permissões de login.
Exiba os usuários existentes:
ACL LISTCrie um usuário para a aplicação:
ACL SETUSER appuser on >STRONG_PASSWORD ~app:* +@read +@write -@dangerousEssa configuração:
- habilita o usuário;
- define uma senha;
- permite acesso às chaves iniciadas por app:;
- permite comandos de leitura e escrita;
- bloqueia comandos da categoria dangerous.
Confira o usuário:
ACL GETUSER appuserConecte-se:
redis-cli --user appuser --pass 'STRONG_PASSWORD'Como desabilitar ou restringir o usuário default
Depois de criar um administrador separado e um usuário para a aplicação, você pode restringir o usuário default.
Exemplo:
ACL SETUSER default offAntes de executar:
- crie outro usuário com permissões administrativas;
- teste o novo login em outra sessão;
- atualize a configuração das aplicações;
- salve a configuração de ACL;
- mantenha o acesso SSH disponível.
Não desabilite o único usuário disponível antes de testar a conta substituta.
Como salvar a configuração de ACL
As regras de ACL podem ser armazenadas no redis.conf ou em um arquivo separado.
Verifique:
CONFIG GET aclfileSalve as alterações:
ACL SAVEQuando aclfile não estiver configurado, certifique-se de que as regras foram adicionadas à configuração persistente. Caso contrário, elas poderão desaparecer após a reinicialização.
Como consultar erros de ACL
Exiba os eventos recentes:
ACL LOGLimite o resultado:
ACL LOG 20Limpe o log:
ACL LOG RESETO log de ACL ajuda a identificar:
- senhas incorretas;
- comandos bloqueados;
- acesso a chaves não autorizadas;
- canais Pub/Sub não autorizados.
Autenticação com requirepass
Configurações simples ou antigas podem utilizar:
requirepass STRONG_PASSWORDDepois da alteração, conecte-se:
redis-cliExecute:
AUTH STRONG_PASSWORDPara novos projetos, prefira ACLs com usuários individuais e o mínimo de permissões necessárias.
Acesso remoto seguro
Os métodos de conexão mais seguros incluem:
- rede privada;
- aplicação e Redis no mesmo servidor;
- túnel SSH;
- VPN;
- TLS combinado com restrições de firewall;
- acesso permitido apenas aos IPs dos servidores backend.
Não permita que todos os hosts da internet se conectem à porta 6379.
Como se conectar por um túnel SSH
Crie o túnel no computador local:
ssh -L 6379:127.0.0.1:6379 root@YOUR_SERVER_IPDepois, conecte-se localmente:
redis-cli -h 127.0.0.1 -p 6379O tráfego será encaminhado pelo SSH, enquanto o Redis continuará escutando apenas no localhost.
Como configurar o firewall
Um servidor Redis utilizado somente localmente normalmente precisa de:
- 22/TCP para SSH;
- nenhuma regra pública para a porta 6379.
Para um servidor backend separado, permita a porta 6379 somente a partir do endereço IP correspondente.
Exemplo com UFW:
ufw allow from BACKEND_IP to any port 6379 proto tcpDepois, bloqueie as demais conexões:
ufw deny 6379/tcpVerifique as regras:
ufw status numberedAntes de alterar o firewall, mantenha a sessão SSH atual aberta e prepare o acesso pelo console da Serverspace.
Como configurar TLS
O Redis pode aceitar conexões TLS quando a compilação instalada oferece suporte à criptografia.
Exemplo:
port 0
tls-port 6379
tls-cert-file /etc/redis/tls/redis.crt
tls-key-file /etc/redis/tls/redis.key
tls-ca-cert-file /etc/redis/tls/ca.crt`port 0` desabilita a porta sem criptografia.
Conecte-se:
redis-cli --tls
--cacert /path/to/ca.crt
--cert /path/to/client.crt
--key /path/to/client.keyProteja a chave privada:
chmod 600 /etc/redis/tls/redis.keyComo configurar maxmemory
Limite o uso de memória do Redis:
maxmemory 3gbNão atribua toda a RAM do servidor ao Redis.
Verifique o valor atual:
redis-cli CONFIG GET maxmemoryAltere em tempo de execução:
redis-cli CONFIG SET maxmemory 3221225472Adicione o parâmetro ao arquivo de configuração para que ele seja aplicado permanentemente.
Políticas de remoção de chaves
Quando o limite maxmemory é atingido, o comportamento do Redis é controlado por maxmemory-policy.
| Política | Comportamento |
|---|---|
| noeviction | Não remove chaves e rejeita operações de escrita quando a memória é esgotada |
| allkeys-lru | Remove aproximadamente as chaves utilizadas há mais tempo |
| allkeys-lfu | Remove aproximadamente as chaves utilizadas com menor frequência |
| allkeys-random | Remove chaves aleatórias |
| volatile-lru | Aplica LRU somente às chaves com TTL |
| volatile-lfu | Aplica LFU somente às chaves com TTL |
| volatile-ttl | Prioriza chaves com menor tempo restante de vida |
Para um cache de uso geral, as opções mais comuns são:
maxmemory-policy allkeys-lruou:
maxmemory-policy allkeys-lfuPara um armazenamento crítico no qual a remoção automática não é aceitável:
maxmemory-policy noevictionComo configurar TTL
Crie uma chave com expiração:
SET session:abc123 "user-1001" EX 3600Atribua TTL a uma chave existente:
EXPIRE session:abc123 3600Verifique:
TTL session:abc123
Remova a expiração:
PERSIST session:abc123
Chaves de cache e dados temporários normalmente devem possuir TTL para não permanecerem na memória indefinidamente.
Snapshots RDB
O RDB cria um snapshot compacto do conjunto de dados nos intervalos configurados.
Exemplo:
save 3600 1
save 300 100
save 60 10000
Essa configuração cria um snapshot:
- depois de uma hora, caso tenha ocorrido pelo menos uma alteração;
- depois de cinco minutos, caso tenham ocorrido 100 alterações;
- depois de um minuto, caso tenham ocorrido 10.000 alterações.
Verifique a configuração:
redis-cli CONFIG GET saveInicie um salvamento em segundo plano:
redis-cli BGSAVEConfira o timestamp:
redis-cli LASTSAVEPersistência AOF
O Append Only File registra em um log as operações que alteram os dados.
Habilite:
appendonly yesUm modo de sincronização comum:
appendfsync everysecOpções disponíveis:
- always — sincroniza após cada operação de escrita;
- everysec — sincroniza aproximadamente uma vez por segundo;
- no — permite que o sistema operacional controle a sincronização.
O modo everysec costuma ser utilizado como equilíbrio entre desempenho e durabilidade.
RDB vs. AOF
| Critério | RDB | AOF |
|---|---|---|
| Formato | Snapshot do conjunto de dados | Log de operações |
| Tamanho do arquivo | Normalmente mais compacto | Pode exigir mais espaço em disco |
| Possível perda de dados recentes | Depende da frequência dos snapshots | Depende do appendfsync |
| Restauração | Normalmente mais rápida | Pode levar mais tempo |
| Cenário comum | Backups e snapshots periódicos | Maior durabilidade para gravações recentes |
Implantações críticas podem habilitar os dois mecanismos.
Onde ficam os arquivos do Redis
Verifique o diretório de dados:
redis-cli CONFIG GET dirConfira o nome do arquivo RDB:
redis-cli CONFIG GET dbfilenameVerifique a configuração do AOF:
redis-cli CONFIG GET appenddirname
redis-cli CONFIG GET appendfilenameNão copie arbitrariamente arquivos de persistência ativos sem considerar as operações de escrita em andamento.
Como criar um backup do Redis
Inicie um snapshot em segundo plano:
redis-cli BGSAVEVerifique o estado:
redis-cli INFO persistenceDepois de um salvamento bem-sucedido, copie o arquivo RDB para um armazenamento separado.
Exemplo:
cp /var/lib/redis/dump.rdb /backup/redis/dump-$(date +%F-%H%M).rdbDetermine o caminho real com CONFIG GET dir.
Estratégia recomendada de backup
Exemplo:
- habilite a persistência de acordo com os requisitos do projeto;
- crie snapshots RDB regularmente;
- copie os snapshots para armazenamento externo;
- mantenha várias versões;
- monitore os resultados do BGSAVE;
- teste a restauração regularmente;
- não considere uma réplica como substituta de um backup.
Uma réplica pode reproduzir exclusões acidentais ou dados corrompidos do nó primário.
Como restaurar um snapshot RDB
Antes da restauração:
- crie uma cópia dos dados atuais;
- pare o Redis;
- verifique o diretório de dados;
- confira o proprietário do arquivo;
- confirme a compatibilidade da versão.
Exemplo:
systemctl stop redis-server
cp /backup/redis/dump.rdb /var/lib/redis/dump.rdb
chown redis:redis /var/lib/redis/dump.rdb
systemctl start redis-serverO nome do serviço e o diretório podem ser diferentes.
Como verificar a persistência
Execute:
redis-cli INFO persistenceAnalise:
- rdb_last_save_time;
- rdb_last_bgsave_status;
- rdb_bgsave_in_progress;
- aof_enabled;
- aof_last_write_status;
- aof_rewrite_in_progress;
- aof_last_bgrewrite_status.
Como monitorar o Redis
Exiba as informações gerais:
redis-cli INFOExiba seções individuais:
redis-cli INFO server
redis-cli INFO clients
redis-cli INFO memory
redis-cli INFO persistence
redis-cli INFO stats
redis-cli INFO replication
redis-cli INFO cpu
redis-cli INFO keyspacePrincipais métricas do Redis
Monitore:
- used_memory;
- used_memory_rss;
- mem_fragmentation_ratio;
- connected_clients;
- blocked_clients;
- instantaneous_ops_per_sec;
- keyspace_hits;
- keyspace_misses;
- evicted_keys;
- expired_keys;
- rejected_connections;
- latest_fork_usec;
- master_repl_offset;
- connected_slaves;
- rdb_last_bgsave_status;
- aof_last_write_status.
Taxa de acerto do cache
A eficiência do cache pode ser avaliada com:
- keyspace_hits;
- keyspace_misses.
Quando a quantidade de misses for alta, verifique:
- se as chaves corretas estão sendo utilizadas;
- se o TTL é muito curto;
- se as chaves são removidas com frequência;
- a política de eviction;
- a lógica da aplicação;
- o limite maxmemory.
Como verificar a latência do Redis
Execute:
redis-cli --latencyExiba o histórico de latência:
redis-cli --latency-historyExecute um teste de latência interna:
redis-cli --intrinsic-latency 30Uma latência alta pode ser causada por:
- rede lenta;
- comandos bloqueantes;
- chaves grandes;
- operações fork;
- uso de swap;
- armazenamento lento utilizado pela persistência;
- sobrecarga de CPU;
- excesso de conexões.
Slow Log do Redis
Exiba comandos lentos:
SLOWLOG GET 20Confira a quantidade de registros:
SLOWLOG LENLimpe o log:
SLOWLOG RESETVerifique a configuração:
CONFIG GET slowlog-log-slower-than
CONFIG GET slowlog-max-lenO Slow Log mede o tempo de execução do comando dentro do Redis e não inclui a latência da rede.
Como encontrar chaves grandes
Execute:
redis-cli --bigkeysPara uma análise mais detalhada da memória:
redis-cli --memkeysChaves grandes podem:
- aumentar a latência;
- bloquear o event loop;
- complicar a replicação;
- aumentar o tempo de exclusão;
- aumentar o tráfego da rede;
- dificultar os backups.
Por que não utilizar KEYS em produção?
O comando:
KEYS *pode bloquear o Redis quando o conjunto de dados é grande.
Utilize SCAN:
SCAN 0 MATCH session:* COUNT 100Continue a busca utilizando o cursor retornado pelo comando anterior.
Como excluir chaves grandes
O comando DEL pode bloquear o Redis ao excluir um objeto muito grande.
Utilize a exclusão assíncrona:
UNLINK large:key
Para limpar um banco lógico, considere:
FLUSHDB ASYNC
Antes de executar, confirme se o banco correto está selecionado.
Replicação do Redis
A replicação cria uma cópia dos dados do nó primário em um ou mais nós replica.
Ela pode ser utilizada para:
- alta disponibilidade;
- escalabilidade de leitura;
- nó de espera;
- Redis Sentinel;
- manutenção sem indisponibilidade prolongada.
A replicação é assíncrona. Portanto, as gravações mais recentes podem ser perdidas durante uma falha.
Como configurar uma réplica
Adicione a seguinte configuração no servidor replica:
replicaof PRIMARY_PRIVATE_IP 6379Quando o primary exigir autenticação, configure as credenciais de replicação.
Em ambientes com ACL, crie um usuário específico para a replicação com as permissões necessárias.
Depois de reiniciar, verifique:
redis-cli INFO replicationA réplica deve exibir:
role:slave
ou a designação atual correspondente ao modo replica.
Como verificar a replicação
No nó primary:
redis-cli INFO replication
Verifique:
- role;
- connected_slaves;
- slave0 ou informações da réplica;
- master_repl_offset;
- repl_backlog_active.
Na réplica:
- master_host;
- master_link_status;
- master_last_io_seconds_ago;
- slave_repl_offset;
- master_sync_in_progress.
Redis Sentinel
O Sentinel monitora os nós primary e replica e pode iniciar um failover automático.
O Sentinel oferece:
- monitoramento do Redis;
- detecção de falhas;
- seleção de um novo primary;
- reconfiguração das demais réplicas;
- descoberta do endereço atual do primary pelos clientes.
Utilize vários processos Sentinel independentes para estabelecer um quorum confiável.
Configuração básica do Sentinel
Exemplo de sentinel.conf:
port 26379
sentinel monitor mymaster PRIMARY_PRIVATE_IP 6379 2
sentinel down-after-milliseconds mymaster 5000
sentinel failover-timeout mymaster 60000
sentinel parallel-syncs mymaster 1Quando o Redis utilizar autenticação por ACL, adicione as credenciais do Sentinel de acordo com a versão do Redis e o modelo de autenticação escolhido.
Inicie o Sentinel:
redis-sentinel /etc/redis/sentinel.confTambém é possível utilizar um serviço systemd, quando ele estiver incluído no pacote.
Como verificar o Redis Sentinel
Conecte-se:
redis-cli -p 26379Exiba as informações do primary:
SENTINEL MASTER mymasterListe as réplicas:
SENTINEL REPLICAS mymasterExiba o endereço do primary atual:
SENTINEL GET-MASTER-ADDR-BY-NAME mymasterRedis Cluster
O Redis Cluster distribui as chaves entre vários nós.
Utilize-o quando:
- o conjunto de dados não couber em um único servidor;
- for necessária escalabilidade horizontal;
- as chaves precisarem ser distribuídas automaticamente;
- for necessária alta disponibilidade para cada shard;
- o cliente da aplicação oferecer suporte ao protocolo Redis Cluster.
Cada nó do cluster precisa de:
- uma porta para clientes, como 6379;
- uma porta cluster bus, normalmente a porta do cliente mais 10000;
- conectividade com todos os demais nós;
- endereços anunciados corretamente;
- cliente com suporte aos redirecionamentos MOVED e ASK.
Quando o Redis Cluster não é necessário
Evite complexidade desnecessária quando:
- o conjunto de dados couber em uma VPS;
- um único servidor suportar a carga;
- uma implantação primary e replica for suficiente;
- a aplicação não oferecer suporte ao Redis Cluster;
- a simplicidade operacional for mais importante;
- o projeto não puder utilizar vários nós.
Um servidor Redis separado com backups é suficiente para pequenos projetos. Adicione réplicas e Sentinel quando precisar de maior disponibilidade.
Como se conectar pelo Python
Instale a biblioteca:
pip install redisExemplo:
import redis
client = redis.Redis(
host="PRIVATE_REDIS_IP",
port=6379,
username="appuser",
password="STRONG_PASSWORD",
decode_responses=True,
socket_connect_timeout=5,
socket_timeout=5,
)
client.set("app:status", "active", ex=300)
print(client.get("app:status"))
Não armazene a senha diretamente no código-fonte. Utilize variáveis de ambiente ou um gerenciador de segredos.
Como se conectar pelo Node.js
Instale o cliente:
npm install redisExemplo:
import { createClient } from "redis";
const client = createClient({
url: "redis://appuser:STRONG_PASSWORD@PRIVATE_REDIS_IP:6379"
});
client.on("error", (error) => {
console.error("Redis error:", error);
});
await client.connect();
await client.set("app:status", "active", {
EX: 300
});
console.log(await client.get("app:status"));
await client.quit();
Passe a senha por meio de uma variável de ambiente protegida.
Como se conectar pelo PHP
Exemplo com PhpRedis:
$redis = new Redis();
$redis->connect('PRIVATE_REDIS_IP', 6379, 5);
$redis->auth([
'appuser',
'STRONG_PASSWORD'
]);
$redis->setex('app:status', 300, 'active');
echo $redis->get('app:status');
Verifique se a versão instalada do cliente oferece suporte à sintaxe de autenticação utilizada.
URI de conexão do Redis
Exemplo:
redis://appuser:STRONG_PASSWORD@PRIVATE_REDIS_IP:6379/0Para TLS:
rediss://appuser:STRONG_PASSWORD@redis.example.com:6379/0Não publique URIs com credenciais:
- em repositórios Git;
- em logs;
- em JavaScript executado no navegador;
- em documentação pública;
- dentro de um Dockerfile.
Connection pooling
A aplicação não deve abrir uma nova conexão TCP para cada comando Redis.
Utilize:
- pool de conexões;
- cliente Redis reutilizável;
- timeouts adequados;
- reconexão automática;
- limites de conexões;
- tratamento da indisponibilidade do Redis.
Exiba as conexões atuais:
redis-cli CLIENT LISTExiba a quantidade de clientes:
redis-cli INFO clientsComo configurar maxclients
Verifique:
redis-cli CONFIG GET maxclientsNão aumente o valor sem analisar:
- limites de descritores de arquivos;
- memória utilizada pelos buffers dos clientes;
- configuração da aplicação;
- vazamentos de conexões;
- configurações do connection pool.
Recomendações para o sistema Linux
O Redis pode apresentar avisos relacionados às configurações do sistema operacional.
Verifique o Transparent Huge Pages:
cat /sys/kernel/mm/transparent_hugepage/enabledVerifique o memory overcommit:
sysctl vm.overcommit_memoryUma configuração frequentemente recomendada para o Redis é:
vm.overcommit_memory = 1Crie uma configuração permanente:
echo "vm.overcommit_memory = 1" > /etc/sysctl.d/99-redis.conf
sysctl --systemTeste alterações no sistema considerando também as demais cargas executadas no servidor.
Swap e Redis
O Redis é sensível à transferência das páginas de memória ativas para a swap.
Quando a swap estiver habilitada:
- monitore seu uso;
- evite pressão constante sobre a memória;
- configure alertas;
- não considere a swap como uma extensão da memória do Redis;
- reduza o conjunto de dados ou aumente os recursos da VPS.
Verifique:
free -h
swapon --showComo atualizar o Redis
Antes de uma atualização:
- leia as notas da versão;
- verifique a compatibilidade dos clientes;
- crie um backup;
- verifique a persistência;
- programe uma janela de manutenção;
- teste a restauração;
- revise as réplicas e o Sentinel;
- considere alterações na configuração e no licenciamento.
O procedimento de atualização depende do sistema operacional e do método de instalação.
Checklist de segurança do Redis
- Não exponha o Redis diretamente à internet.
- Utilize uma rede privada.
- Restrinja a porta 6379 com um firewall.
- Mantenha o protected mode habilitado.
- Utilize ACL.
- Crie um usuário separado para cada aplicação.
- Restrinja os padrões de chaves.
- Bloqueie comandos perigosos.
- Não reutilize a mesma senha em vários serviços.
- Utilize TLS ou túnel SSH em redes não confiáveis.
- Não armazene segredos no código-fonte.
- Atualize o Redis e o sistema operacional regularmente.
- Analise o ACL LOG.
- Armazene backups externamente.
- Monitore memória, eviction e persistência.
Problemas comuns do Redis
O Redis não inicia
Verifique o estado:
systemctl status redis-serverConsulte o journal:
journalctl -u redis-server -n 100 --no-pagerPossíveis causas:
- erro no redis.conf;
- porta já utilizada;
- permissões incorretas;
- diretório de dados inacessível;
- espaço em disco insuficiente;
- arquivo AOF corrompido;
- memória insuficiente;
- erro no certificado TLS.
Connection refused
Verifique:
ss -lntp | grep 6379Confira o bind:
redis-cli CONFIG GET bindVerifique o firewall:
ufw statusConfirme que:
- o serviço está em execução;
- o Redis escuta na interface necessária;
- o IP da aplicação está permitido no firewall;
- o endereço correto do servidor está sendo utilizado;
- o roteamento da rede privada funciona.
DENIED Redis is running in protected mode
Esse erro significa que o cliente está se conectando por uma interface não confiável enquanto o Redis utiliza uma configuração de proteção.
Não desabilite o protected mode sem implementar os controles de segurança necessários.
Configure:
- bind para o endereço IP privado;
- ACL;
- autenticação;
- firewall;
- rede privada.
NOAUTH Authentication required
O cliente ainda não foi autenticado.
Conecte-se:
redis-cli --user appuser --pass 'STRONG_PASSWORD'Ou execute:
AUTH appuser STRONG_PASSWORDVerifique a configuração da aplicação e das ACLs.
WRONGPASS invalid username-password pair
Verifique:
- nome de usuário;
- senha;
- se o usuário está habilitado;
- layout do teclado;
- caracteres especiais na URI;
- se o segredo está atualizado;
- ACL LIST.
NOPERM this user has no permissions
Verifique a ACL:
ACL GETUSER appuserAnalise:
- categorias de comandos;
- padrões de chaves;
- permissões dos canais Pub/Sub;
- comandos bloqueados;
- ACL LOG.
OOM command not allowed
O Redis atingiu o limite maxmemory e não consegue processar a operação de escrita.
Verifique:
redis-cli INFO memory
redis-cli CONFIG GET maxmemory
redis-cli CONFIG GET maxmemory-policyPossíveis soluções:
- aumentar a RAM da VPS;
- aumentar maxmemory, preservando uma reserva para o sistema;
- configurar uma política de eviction;
- adicionar TTLs;
- remover chaves não utilizadas;
- localizar chaves grandes;
- dividir o conjunto de dados.
Alto consumo de memória
Verifique:
redis-cli INFO memory
redis-cli --bigkeys
redis-cli --memkeysPossíveis causas:
- chaves sem TTL;
- valores grandes;
- estruturas de dados ineficientes;
- quantidade excessiva de chaves;
- fragmentação da memória;
- buffers dos clientes;
- replicação;
- scripts Lua de longa duração;
- Streams sem limite de tamanho.
Alta latência
Verifique:
redis-cli --latency
redis-cli SLOWLOG GET 20
redis-cli INFO commandstatsPossíveis causas:
- KEYS em um banco grande;
- operações DEL em objetos grandes;
- chaves grandes;
- rede lenta;
- uso de swap;
- operações fork;
- alto uso de CPU;
- quantidade excessiva de clientes;
- disco lento utilizado pelo AOF.
O snapshot RDB não é criado
Verifique:
redis-cli INFO persistence
df -h
ls -ld /var/lib/redisPossíveis causas:
- disco cheio;
- permissões incorretas;
- memória insuficiente para fork;
- diretório de dados indisponível;
- sistema de arquivos somente para leitura;
- operação BGSAVE anterior ainda em execução.
O arquivo AOF está corrompido
Pare o Redis e crie uma cópia do arquivo antes de tentar o reparo.
Utilize o utilitário padrão:
redis-check-aof --fix PATH_TO_AOFNão modifique o AOF original sem criar um backup.
A réplica não consegue se conectar
Verifique:
- disponibilidade do nó primary;
- porta 6379;
- ACL e autenticação;
- parâmetro replicaof;
- conectividade da rede privada;
- regras de firewall;
- INFO replication;
- logs do primary e da replica.
O Sentinel não executa o failover
Verifique:
- disponibilidade da porta 26379;
- quorum;
- quantidade de processos Sentinel;
- acesso ao primary e às réplicas;
- autenticação;
- down-after-milliseconds;
- logs do Sentinel;
- existência de uma réplica adequada.
Quando vale a pena utilizar o Redis?
| Necessidade | O Redis é adequado? |
|---|---|
| Cache de APIs e consultas ao banco | Sim |
| Armazenamento de sessões de usuários | Sim |
| Filas e eventos em tempo real | Sim |
| Rankings e contadores | Sim |
| Banco de dados relacional principal | Normalmente não |
| Conjunto de dados maior que a RAM disponível | Exige outra arquitetura ou clusterização |
Perguntas frequentes (FAQ)
O que é Redis?
Redis é um armazenamento de dados de alto desempenho em memória utilizado para cache, sessões, filas, contadores, rankings e cargas de trabalho em tempo real.
É possível implantar o Redis pela Serverspace?
Sim. O Redis está disponível no catálogo de 1-Click Apps e pode ser selecionado durante a criação da VPS.
Qual porta o Redis utiliza?
Por padrão, o Redis aceita conexões de clientes na porta TCP 6379.
Posso expor o Redis à internet?
A exposição pública direta não é recomendada. Utilize rede privada, firewall, ACL, autenticação, VPN, túnel SSH ou TLS.
Como verificar se o Redis está funcionando?
Conecte-se com redis-cli e execute PING. Um servidor funcionando corretamente retorna PONG.
O Redis precisa de senha?
Sim. Em produção, utilize ACL e crie usuários separados com o mínimo de permissões necessárias.
O que é protected mode?
Protected mode restringe conexões inseguras quando o Redis não possui proteção de rede e autenticação adequadas.
O Redis armazena dados somente na RAM?
O conjunto de dados ativo permanece na memória, mas o Redis pode salvar as informações em disco por meio de snapshots RDB e AOF.
Qual é melhor: RDB ou AOF?
O RDB cria snapshots compactos periódicos, enquanto o AOF registra as operações de escrita. A escolha depende da perda de dados aceitável, desempenho e requisitos de restauração.
É possível habilitar RDB e AOF simultaneamente?
Sim. Implantações críticas podem utilizar os dois mecanismos de persistência.
O que é maxmemory?
maxmemory limita a quantidade de memória que o Redis pode utilizar para armazenar dados.
O que acontece quando a memória acaba?
O comportamento é definido por maxmemory-policy. O Redis pode remover chaves conforme a política selecionada ou rejeitar novas operações de escrita.
As chaves de cache devem ter TTL?
Sim. Valores temporários e de cache normalmente devem ter TTL para serem removidos automaticamente.
O Redis pode ser utilizado como fila?
Sim. Lists podem ser utilizadas para filas simples, enquanto Redis Streams e grupos de consumidores oferecem processamento mais confiável.
O que é Redis Sentinel?
Sentinel monitora os nós primary e replica e pode promover automaticamente uma réplica quando o primary fica indisponível.
O que é Redis Cluster?
Redis Cluster distribui os dados entre vários nós e oferece escalabilidade horizontal e alta disponibilidade por shard.
Uma réplica substitui o backup?
Não. Uma réplica pode reproduzir exclusões acidentais ou alterações incorretas. Os backups devem ser armazenados separadamente.
Como encontrar chaves grandes?
Utilize redis-cli --bigkeys ou redis-cli --memkeys.
Por que não utilizar KEYS em produção?
KEYS percorre todo o espaço de chaves e pode bloquear o Redis por muito tempo. Utilize SCAN para uma busca incremental.
O Redis é adequado para produção?
Sim, desde que ACL, firewall, rede privada, limites de memória, persistência, backups, monitoramento e alta disponibilidade estejam configurados corretamente.
Implante o Redis na Serverspace
O aplicativo Redis pronto para uso da Serverspace permite criar um servidor para cache, sessões, filas e serviços em tempo real sem instalar os pacotes manualmente.
Depois da implantação, você recebe:
- uma máquina virtual dedicada;
- endereço IP público e, quando necessário, privado;
- servidor Redis instalado;
- recursos configuráveis da VPS;
- acesso root via SSH;
- possibilidade de conexão pelo redis-cli;
- suporte à persistência;
- configuração de ACL;
- ferramentas de replicação e monitoramento;
- controle sobre o acesso de rede.
O servidor pode ser utilizado para:
- cache de aplicações web;
- sessões de usuários;
- filas de tarefas em segundo plano;
- rate limiting;
- contadores e rankings;
- Pub/Sub;
- Streams;
- bloqueios distribuídos;
- infraestrutura de microsserviços.
O administrador mantém acesso completo ao sistema operacional e pode gerenciar a configuração do Redis, firewall, persistência, backups, replicação e recursos da VPS.
Conclusão
Redis é um componente de infraestrutura de alto desempenho adequado para cache, sessões de usuários, filas, contadores, rankings e processamento de eventos em tempo real.
A implantação pela Serverspace reduz o trabalho inicial de configuração do servidor. Basta selecionar o Redis no catálogo de 1-Click Apps, configurar os recursos e criar a VPS.
Depois da instalação, não exponha imediatamente a porta 6379 para toda a internet. Configure bind, protected mode, ACL, regras de firewall e conectividade privada entre a aplicação e o Redis.
Uma implantação em produção também deve limitar a memória com maxmemory, utilizar uma política de eviction adequada, configurar RDB ou AOF, criar backups externos e monitorar latência, consumo de memória, remoção de chaves, persistência e estado da replicação.