Introdução aos Bancos de Dados em Memória e Sistemas de Cache
Como escolher a ferramenta ideal
Aprenda fatores na escolha entre Redis e alternativas: latência, persistência, escalabilidade, licenciamento e custo.
Nesta aula você vai
- Aplicar critérios objetivos para escolher entre Redis, Valkey, Memcached e alternativas
- Avaliar requisitos de consistência, durabilidade e operação antes da decisão
- Evitar anti-padrões como usar cache como único banco sem análise de risco
Como escolher a ferramenta ideal
Objetivos
Nesta aula você vai:
- Estruturar uma checklist de decisão para bancos em memória
- Comparar Redis, Valkey, Memcached e opções gerenciadas em nuvem
- Alinhar escolha técnica a custo operacional e maturidade da equipe
Introdução
"Qual banco em memória devo usar?" é pergunta frequente em arquitetura de software — e raramente tem resposta universal. A ferramenta ideal depende do formato dos dados, das garantias exigidas, do orçamento de RAM, da equipe que opera e do ecossistema já presente na empresa.
Esta aula oferece um framework de decisão em camadas, não um veredito dogmático. Ao final, você deve conseguir justificar uma escolha para stakeholders técnicos e de negócio.
Conteúdo
Dimensões de avaliação
Antes de comparar produtos, documente requisitos:
| Dimensão | Perguntas-chave |
|---|---|
| Modelo de dados | Só chave-valor opaco ou preciso de listas, sets, sorted sets, streams? |
| Durabilidade | Perda total após restart é aceitável? Preciso de AOF/RDB/replicação? |
| Consistência | Eventual basta ou preciso de transações/lua atômico? |
| Escala | Um nó suficiente? Sharding horizontal? Multi-região? |
| Latência | Sub-ms local ou tolerância a rede cross-AZ? |
| Licenciamento | Open source puro (BSD), SSPL, ou serviço gerenciado? |
| Operação | Time com SRE maduro ou startup que prefere managed? |
Preencher essa tabela com o projeto real elimina 80% das opções incorretas.
Árvore de decisão simplificada
Precisa apenas de cache simples chave-valor, sem estruturas ricas?
├── Sim → Memcached ou Redis/Valkey em modo cache puro
└── Não → Precisa de filas duráveis, pub/sub, sorted sets?
├── Sim → Redis ou Valkey (compatível)
└── Não → Avaliar também KeyDB, Hazelcast, ou cache na CDN
Precisa alta disponibilidade automática em produção?
├── Sim → Redis/Valkey Cluster ou Sentinel; ou ElastiCache/Memorystore
└── Não → Instância única com backup pode bastar em homologação
Restrição de licença SSPL (Redis Ltd.)?
├── Sim → Valkey (fork Linux Foundation, BSD)
└── Não → Redis open source ou enterprise conforme contrato
Comparativo resumido das opções do módulo
| Critério | Redis / Valkey | Memcached |
|---|---|---|
| Estruturas de dados | Ricas (hash, zset, stream…) | String/blob apenas |
| Persistência | Sim (configurável) | Não |
| Replicação nativa | Sim | Não (client-side sharding) |
| Pub/Sub e Streams | Sim | Não |
| Simplicidade operacional | Média | Alta |
| Uso típico | Plataforma de dados em memória | Cache volátil puro |
| Licença (2024+) | Redis: RSAL/SSPL; Valkey: BSD | BSD |
Redis gerenciado (AWS ElastiCache, Azure Cache, Google Memorystore): reduz burden operacional; custo maior; versões e features dependem do provedor.
Valkey: escolha natural quando se busca compatibilidade Redis com governança open source neutra — detalhado no curso 3 deste módulo.
Anti-padrões a evitar
- Cache como único banco sem backup para dados que não podem ser reconstruídos
- TTL único para tudo — dados estáticos e voláteis na mesma política
- Objetos gigantes serializados em uma chave — fragmenta memória e bloqueia rede
- Hot keys sem shard ou local cache — um único key vira gargalo de CPU/rede
- Escolher por hype sem medir hit rate e latência p99 na carga real
Integração com o restante da stack
A ferramenta em memória raramente vive isolada. Considere:
- ORM e invalidação: quem invalida o cache após
UPDATEno Postgres? - Observabilidade: métricas de hit/miss exportadas para Prometheus?
- Segurança: TLS, ACL, rede privada — Redis sem senha em VPC exposta é incidente esperado
- Custo: RAM em cloud é cara; dimensionar
maxmemorye eviction evita surpresa na fatura
Exemplos práticos
Checklist aplicada a um SaaS B2B com API REST e PostgreSQL:
| Requisito | Decisão |
|---|---|
| Cache de leitura de tenant settings | Redis/Valkey, TTL 10 min, cache-aside |
| Sessão de usuário web | Hash com TTL, mesma instância |
| Rate limit por API key | INCR + TTL |
| Relatórios analíticos pesados | Não Redis — manter no warehouse |
| Equipe sem SRE dedicado | ElastiCache Redis ou Valkey gerenciado |
Prova de conceito local antes de contratar managed:
docker run -d --name redis-poc -p 6379:6379 redis:7-alpine
redis-cli PING
Se o POC validar latência e comandos necessários, suba o mesmo cliente (ex.: ioredis, Lettuce) contra o endpoint gerenciado em staging.
Resumo
- Escolha ferramenta em memória a partir de requisitos explícitos, não de popularidade isolada.
- Memcached brilha em cache volátil simples; Redis/Valkey cobrem ecossistema completo de estruturas e persistência.
- Licenciamento, HA e operação managed são critérios de negócio tão importantes quanto throughput.
- Documente anti-padrões e integração com banco primário, observabilidade e segurança.
- Este módulo aprofunda Redis (curso 2), Valkey (curso 3) e Memcached (curso 4) para refinar a decisão tomada aqui.