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:
ou:
Etapa 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:
Durante a primeira conexão, confira a impressão digital do host e confirme:
Digite 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:
Caso o serviço não seja encontrado:
Liste os serviços Redis ativos:
Confira o processo:
Verifique a porta:
Como testar o Redis com redis-cli
Conecte-se localmente:
Execute:
Resposta esperada:
Também é possível testar o Redis com um único comando:
Quando a autenticação estiver habilitada:
Uma 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:
Recupere o valor:
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:
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:
Recupere o objeto completo:
Atualize um campo:
Exclua um campo:
Como trabalhar com listas
Adicione tarefas:
LPUSH jobs:email "task-2"
Exiba a lista:
Recupere uma tarefa:
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:
Verifique se um elemento existe:
SISMEMBER article:100:tags redis
Remova um elemento:
Como trabalhar com conjuntos ordenados
Crie uma tabela de classificação:
ZADD game:leaderboard 950 bob
ZADD game:leaderboard 1730 carol
Exiba a classificação em ordem decrescente:
Aumente uma pontuação:
Como trabalhar com Streams
Adicione um evento:
Leia o stream:
Crie um grupo de consumidores:
Leia um evento como consumidor:
Confirme o evento após o processamento:
Localizaçã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:
ou:
Localize o arquivo:
Confira os argumentos do processo:
Crie uma cópia antes da edição:
Depois 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:
Quando a aplicação estiver em outro servidor da rede privada:
Não utilize:
sem 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:
O 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:
Crie um usuário para a aplicação:
Essa 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:
Conecte-se:
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:
Antes 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:
Salve as alterações:
Quando 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:
Limite o resultado:
Limpe o log:
O 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:
Depois da alteração, conecte-se:
Execute:
Para 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:
Depois, conecte-se localmente:
O 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:
Depois, bloqueie as demais conexões:
Verifique as regras:
Antes 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:
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:
--cacert /path/to/ca.crt
--cert /path/to/client.crt
--key /path/to/client.key
Proteja a chave privada:
Como configurar maxmemory
Limite o uso de memória do Redis:
Não atribua toda a RAM do servidor ao Redis.
Verifique o valor atual:
Altere em tempo de execução:
Adicione 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:
ou:
Para um armazenamento crítico no qual a remoção automática não é aceitável:
Como configurar TTL
Crie uma chave com expiração:
Atribua TTL a uma chave existente:
Verifique:
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:
Inicie um salvamento em segundo plano:
Confira o timestamp:
Persistência AOF
O Append Only File registra em um log as operações que alteram os dados.
Habilite:
Um modo de sincronização comum:
Opçõ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:
Confira o nome do arquivo RDB:
Verifique a configuração do AOF:
redis-cli CONFIG GET appendfilename
Nã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:
Verifique o estado:
Depois de um salvamento bem-sucedido, copie o arquivo RDB para um armazenamento separado.
Exemplo:
Determine 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:
cp /backup/redis/dump.rdb /var/lib/redis/dump.rdb
chown redis:redis /var/lib/redis/dump.rdb
systemctl start redis-server
O nome do serviço e o diretório podem ser diferentes.
Como verificar a persistência
Execute:
Analise:
- 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:
Exiba seções individuais:
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 keyspace
Principais 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:
Exiba o histórico de latência:
Execute um teste de latência interna:
Uma 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:
Confira a quantidade de registros:
Limpe o log:
Verifique a configuração:
CONFIG GET slowlog-max-len
O 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:
Para uma análise mais detalhada da memória:
Chaves 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:
pode bloquear o Redis quando o conjunto de dados é grande.
Utilize SCAN:
Continue 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:
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:
Quando 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:
A réplica deve exibir:
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:
sentinel monitor mymaster PRIMARY_PRIVATE_IP 6379 2
sentinel down-after-milliseconds mymaster 5000
sentinel failover-timeout mymaster 60000
sentinel parallel-syncs mymaster 1
Quando 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:
Também é possível utilizar um serviço systemd, quando ele estiver incluído no pacote.
Como verificar o Redis Sentinel
Conecte-se:
Exiba as informações do primary:
Liste as réplicas:
Exiba o endereço do primary atual:
Redis 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:
Exemplo:
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:
Exemplo:
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->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:
Para TLS:
Nã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:
Exiba a quantidade de clientes:
Como configurar maxclients
Verifique:
Nã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:
Verifique o memory overcommit:
Uma configuração frequentemente recomendada para o Redis é:
Crie uma configuração permanente:
sysctl --system
Teste 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:
swapon --show
Como 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:
Consulte o journal:
Possí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:
Confira o bind:
Verifique o firewall:
Confirme 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:
Ou execute:
Verifique 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:
Analise:
- 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 CONFIG GET maxmemory
redis-cli CONFIG GET maxmemory-policy
Possí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 --bigkeys
redis-cli --memkeys
Possí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 SLOWLOG GET 20
redis-cli INFO commandstats
Possí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:
df -h
ls -ld /var/lib/redis
Possí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:
Nã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.