O que é Redis Cluster e por que ele existe

Escalando o Redis além de um único servidor

O Redis é, por padrão, uma instância única limitada à memória de uma máquina. Quando o volume de dados ou o throughput ultrapassa essa fronteira, entra o Redis Cluster: um modo nativo de distribuição que particiona automaticamente os dados entre múltiplos nós. Ele foi introduzido na versão 3.0 e resolve tanto o problema de capacidade quanto o de disponibilidade. Com o cluster ativo, falha de um nó não derruba o sistema — o cluster elege um substituto e continua operando sem intervenção manual.

Slots e sharding — como dados são distribuídos

O espaço de 16.384 hash slots

O Redis Cluster divide o keyspace em exatamente 16.384 hash slots. Cada chave é atribuída a um slot usando CRC16(key) mod 16384, e cada nó master é responsável por um subconjunto contíguo desses slots. Se você tem três masters, cada um cuida de aproximadamente 5.461 slots. Quando um cliente escreve uma chave, o cluster calcula o slot e redireciona a requisição ao nó correto com um comando MOVED. Essa arquitetura torna o sharding determinístico, sem tabela de roteamento centralizada vulnerável a falhas.

Nós master e replica no cluster

Replicação integrada para alta disponibilidade

Cada nó master pode ter uma ou mais réplicas que recebem replicação assíncrona em tempo real. As réplicas não servem leituras por padrão (embora isso seja configurável com READONLY), mas ficam prontas para promover caso o master falhe. O número recomendado é de pelo menos um replica por master, formando um cluster mínimo de seis nós — três masters e três réplicas. Essa topologia garante que a perda de qualquer nó único não resulte em perda de slots ou indisponibilidade.

Failover automático — eleição de novo master

Como o cluster sobrevive à falha de um nó

Quando um master fica inacessível, as réplicas desse master detectam a falha via gossip protocol após o timeout configurado em cluster-node-timeout. A réplica mais atualizada (com menor replication offset lag) inicia uma eleição, solicita votos dos demais masters e, ao obter maioria, promove a si mesma. Todo o processo leva tipicamente alguns segundos, durante os quais os slots daquele master ficam indisponíveis. Após a promoção, o cluster atualiza sua tabela de configuração e os clientes recebem redirecionamentos MOVED para o novo master.

Rebalanceamento de slots ao adicionar nós

Crescimento horizontal sem downtime

Adicionar um novo nó ao cluster não redistribui os dados automaticamente — é necessário executar redis-cli --cluster reshard para mover slots do nós existentes para o novo. Durante a migração, o cluster usa os comandos CLUSTER SETSLOT e MIGRATE para transferir chaves individualmente, mantendo o serviço disponível. Os clientes continuam operando normalmente: slots em migração respondem com ASK redirect, que o cliente segue transparentemente. Esse mecanismo permite crescimento incremental sem janelas de manutenção.

Limitações do Redis Cluster — multi-key e transactions

O que muda quando há múltiplos nós

O Redis Cluster impõe uma restrição importante: operações multi-key (MGET, MSET, SUNION, EVAL com múltiplas chaves) só funcionam se todas as chaves residirem no mesmo slot. Para contornar isso, usa-se hash tags: envolver parte da chave entre chaves ({user:1}:profile e {user:1}:cart ficam no mesmo slot). Transações com MULTI/EXEC também ficam restritas a um único slot. Lua scripts que acessam chaves em slots diferentes causam CROSSSLOT error. Entender essas limitações antes de modelar os dados é fundamental para evitar refatorações custosas em produção.

Redis Sentinel vs Redis Cluster

Dois caminhos para alta disponibilidade

O Redis Sentinel monitora uma instância standalone e promove replica automaticamente em caso de falha, mas não distribui dados — toda a memória ainda está em uma única máquina. O Redis Cluster combina alta disponibilidade com sharding horizontal, sendo a escolha correta quando os dados não cabem em um servidor ou quando o throughput exige paralelismo. Sentinel é mais simples de operar e adequado para datasets menores com requisito de HA. Cluster exige mais nós, mais complexidade operacional e cuidado com a modelagem de chaves. A decisão depende principalmente do tamanho do dataset e do padrão de acesso.

Monitoramento e operações no cluster

Visibilidade em um sistema distribuído

O comando CLUSTER INFO retorna métricas essenciais: estado do cluster, número de slots atribuídos, tamanho do epoch de configuração. CLUSTER NODES lista todos os nós com seus IDs, flags e slots. Para monitoramento contínuo, ferramentas como RedisInsight, Prometheus com redis_exporter e Grafana oferecem dashboards com latência por nó, hit rate, memória usada e keyspace events. Alertas críticos incluem cluster_state != ok, número de slots com falha e memória acima de 80% em qualquer nó. Operações de resharding devem ser feitas fora do horário de pico e monitoradas em tempo real.

Casos de uso e anti-padrões

Quando usar Redis Cluster e quando evitar

Redis Cluster é ideal para cache de sessões em alta escala, filas distribuídas com Redis Streams, rate limiting global e leaderboards com grandes volumes. Anti-padrões incluem usar cluster com dados que têm muitas dependências cross-slot, armazenar objetos grandes (acima de 512MB por chave) e usar KEYS * em produção — esse comando bloqueia o servidor e escaneia todos os slots. Outro erro comum é não configurar maxmemory-policy adequadamente; sem ela, o Redis pode rejeitar escritas ou consumir toda a RAM do servidor quando o limite é atingido.

Conclusão

Redis Cluster como pilar de cache distribuído

Continue em: Fundamentos obrigatórios antes de produção.

Vídeos — Redis Cluster e Cache Distribuído

Conceitos-chave — Redis Cluster

Hash Slots

O Redis Cluster usa 16.384 slots distribuídos entre masters via CRC16(key) mod 16384.

Failover

Réplicas elegem novo master automaticamente via gossip protocol após timeout configurável.

Hash Tags

Chaves entre chaves ({tag}) ficam no mesmo slot, permitindo operações multi-key.

Cluster Mínimo

3 masters + 3 réplicas = configuração mínima recomendada para HA real.

Resharding Online

Slots migram entre nós sem downtime usando CLUSTER SETSLOT e MIGRATE.

Sentinel vs Cluster

Sentinel = HA sem sharding. Cluster = HA + distribuição horizontal de dados.

ByteByteGo — Cache e Sistemas Distribuídos

@bytebytego

Reels — Sistemas e Arquitetura

@bytebytego

ByteByteGo no Facebook

Threads sobre Redis e Cache

@mjovanovictech

Como testar que sua API é resiliente e segura para produção real

Ver post completo no X →
@mjovanovictech

Implementando padrões de resiliência em .NET Core com exemplos reais

Ver post completo no X →
@mjovanovictech

Vertical Slice Architecture — organizando sistemas para escala

Ver post completo no X →
@mjovanovictech

5 anos com Clean Architecture — lições de sistemas em produção

Ver post completo no X →
@mjovanovictech

Design de APIs resilientes — retry, backoff e idempotência juntos

Ver post completo no X →
@mjovanovictech

Monolito vs Microsserviços — como escolher para cada contexto

Ver post completo no X →

O que dizem

Felipe Rangel ★★★★★

Finalmente entendi a diferença entre Sentinel e Cluster. Conteúdo muito bem explicado.

Camila Borges ★★★★★

As limitações de multi-key e hash tags são exatamente o que eu precisava entender antes do nosso refactor.

André Lopes ★★★★☆

Boa cobertura de sharding e failover. Seria interessante ter um exemplo de resharding completo.