Pular para o conteúdo

Arquitetura de software · Escala e desempenho · 6 min de leitura

Cache: estratégias e armadilhas

Guardar resultados caros perto de quem usa: menos latência e menos carga no banco — desde que se resolva quando o dado muda.

Aplicação → Cache: 1. procura1. procuraCache → Acerto: achouachouAplicação → Banco: 2. falta: busca2. falta: buscaBanco → Cache: 3. grava com TTLAplicaçãoAplicaçãoCache — Redis, memóriaCacheRedis, memóriaBanco — fonte da verdadeBancofonte da verdadeAcerto — resposta rápidaAcertoresposta rápida

Arraste para o lado para ver o diagrama inteiro.

No padrão cache-aside a aplicação controla o cache; o TTL (tempo de vida) limita quanto tempo um dado pode ficar desatualizado.

Onde colocar

  • Navegador e CDN: cabeçalhos HTTP (Cache-Control, ETag).
  • Aplicação: memória local ou um cache distribuído como Redis.
  • Banco: o próprio banco já guarda páginas em memória.

Estratégias

  • Cache-aside: lê do cache; na falta, busca no banco e grava.
  • Write-through: grava no cache e no banco juntos.
  • Write-back: grava no cache e persiste depois (rápido, risco de perda).

Armadilhas

  • Invalidação: o dado mudou e o cache não. Use TTL e apague a chave ao atualizar.
  • Estouro na expiração (thundering herd): muitas requisições recriam a mesma chave ao mesmo tempo — use bloqueio ou expiração com variação.
  • Não guarde dados pessoais sem prazo e sem separar por usuário.

Em resumo

Referências

Continue aprendendo

Todos os temas de arquitetura de software →