Redis vs Memcached: qual cache usar em 2025
Redis e Memcached resolvem o mesmo problema imediato: tirar carga do banco. A diferença aparece quando você precisa de estrutura de dados, persistência ou escala horizontal. Comparamos os dois por critério e indicamos qual escolher para cada cenário.
Redis e Memcached resolvem o mesmo problema imediato: tirar carga do banco de dados. A diferença aparece quando você precisa de estrutura de dados, persistência ou escala horizontal. Memcached é um cache chave-valor simples e horizontalmente escalável, ideal para sessões e objetos prontos. Redis é um armazenamento em memória com estruturas de dados, persistência opcional e pub/sub, indicado quando o cache precisa de lógica além de guardar e recuperar. Neste comparativo, quebramos os dois por critério e fechamos com um veredito direto.
Estrutura de dados: o divisor de águas
Memcached guarda strings e blobs. Ponto. Você envia uma chave, recebe um valor, e qualquer lógica de lista, ranking ou fila fica na aplicação. Redis vai além: strings, hashes, listas, conjuntos, sorted sets, streams e HyperLogLog. Isso muda o que você consegue fazer sem tocar no banco.
Um exemplo concreto: um ranking de produtos mais vistos. No Memcached, você guarda uma lista serializada e reescreve o objeto inteiro a cada atualização. No Redis, usa um sorted set e incrementa a pontuação com um comando. A diferença de código e de latência aparece quando o volume cresce.
Se o seu cache é só "guardar o resultado da query", Memcached não deve nada. Se você quer cache com comportamento, Redis é o caminho.
Desempenho e escalabilidade horizontal
Os dois são rápidos. Ambos mantêm dados em memória e respondem em sub-milissegundos na maioria dos casos. A diferença prática está na escala.
Memcached foi desenhado para multithreading: aproveita vários núcleos de CPU naturalmente e escala adicionando nós. O cliente faz o sharding, e o cluster cresce de forma quase linear. Para cache de sessão e objetos prontos, é uma escolha enxuta.
Redis, na versão OSS, processa comandos em thread única (com I/O multiplexado). Isso simplifica a consistência, mas exige atenção ao planejamento de sharding. O Redis Cluster resolve a escala horizontal com partição automática de chaves. Em cargas muito altas de leitura e escrita simples, o Memcached ainda leva vantagem em uso bruto de CPU.
Persistência e durabilidade dos dados
Memcached não persiste. Reiniciou o processo, perdeu o cache. Isso é uma feature, não um bug: cache volátil é cache honesto.
Redis oferece persistência opcional via RDB (snapshots) e AOF (append-only file). Você pode configurar para não persistir nada, ou para gravar a cada segundo, ou a cada comando. Essa flexibilidade permite usar Redis como cache e como armazenamento primário de dados que precisam sobreviver a reinícios.
A ressalva: persistência não é backup. RDB e AOF protegem contra queda do processo, não contra corrupção lógica ou erro humano. Se o dado é crítico, ele pertence a um banco, não ao cache.
Casos de uso: quando cada um brilha
Memcached se encaixa bem em:
- Cache de sessão de usuário, onde o dado é um blob e a leitura é constante.
- Cache de páginas ou fragmentos HTML renderizados.
- Cache de resultados de query que não mudam de forma.
- Ambientes onde a simplicidade operacional é prioridade.
Redis se encaixa bem em:
- Rankings, contadores e leaderboards com sorted sets.
- Filas leves e streams de eventos.
- Rate limiting com TTL e contadores atômicos.
- Cache com invalidação por padrão e pub/sub para notificar aplicações.
- Cenários onde o cache precisa de persistência opcional.
Operação, ecossistema e custo
Memcached é menor em superfície: menos comandos, menos configuração, menos modos de falha. Subir um nó é trivial. O ecossistema de clientes é maduro em praticamente toda linguagem.
Redis tem mais peças: sentinel, cluster, módulos, replicação. Isso exige mais decisões de arquitetura e mais monitoramento. Em contrapartida, a comunidade é enorme e a documentação cobre desde o básico até padrões avançados.
Custo, na prática, depende do provedor e do plano. Ambos rodam em instâncias pequenas e escalam conforme a memória. Como os preços variam por região e por provedor, vale comparar o custo por GB de memória e o custo de transferência no seu provedor específico antes de decidir.
Tabela comparativa
| Critério | Memcached | Redis | |---|---|---| | Estrutura de dados | Chave-valor simples | Strings, hashes, listas, sets, sorted sets, streams | | Persistência | Não | Opcional (RDB/AOF) | | Multithreading | Sim | Thread única (OSS), com I/O multiplexado | | Escala horizontal | Sharding no cliente | Redis Cluster com partição automática | | Pub/Sub | Não | Sim | | Transações | Não | Sim (MULTI/EXEC) | | Complexidade operacional | Baixa | Média a alta | | Caso típico | Cache de sessão e objetos | Cache com lógica, filas, rankings |
Veredito: qual cache usar
Para quem busca cache simples, volátil e horizontalmente escalável com o mínimo de configuração, a escolha é Memcached. Ele faz uma coisa e faz bem.
Para quem busca estruturas de dados ricas, persistência opcional, pub/sub ou qualquer lógica que vá além de guardar e recuperar, a escolha é Redis. Ele cobre mais cenários com um único componente.
Um critério de decisão prático: se a pergunta for "como guardo esse objeto?", Memcached resolve. Se a pergunta for "como guardo esse objeto e opero sobre ele?", Redis resolve. E se você já usa Redis para outra finalidade, adicionar cache nele evita um segundo componente na stack.
FAQ
Redis é sempre mais rápido que Memcached?
Não. Em operações simples de leitura e escrita de chave-valor, o Memcached pode ter desempenho igual ou superior por aproveitar múltiplos núcleos de CPU. A diferença aparece em cargas específicas e depende do hardware e do padrão de acesso.
Posso usar os dois juntos?
Sim. Alguns times usam Memcached para sessões e Redis para rankings e filas. O custo é operar dois componentes. Vale quando cada um resolve um problema distinto de forma clara.
Redis substitui um banco de dados?
Não como regra. Redis pode atuar como armazenamento primário em casos específicos, mas a maioria das aplicações precisa de um banco relacional ou de documentos para dados duráveis e consultas complexas.
Memcached perde dados ao reiniciar?
Sim. Memcached não persiste em disco. Ao reiniciar o processo, todo o cache é perdido. Isso é esperado em um cache volátil e exige que a aplicação saiba repopular os dados.
Qual é mais fácil de operar?
Memcached, pela superfície menor de configuração e menos modos de falha. Redis exige decisões sobre persistência, replicação e cluster, o que aumenta a complexidade operacional.
Redis Cluster é obrigatório para escalar?
Não. Você pode escalar com um único nó maior ou com sharding no cliente. O Redis Cluster é indicado quando a memória de um nó não é suficiente ou quando você precisa de partição automática.