Sistemas
TTL e uma reza não é estratégia
Invalidação de cache é um dos dois problemas difíceis da computação. A maioria dos engenheiros resolve com um TTL de cinco minutos e uma reza.
TTL fixo funciona para dado que quase não muda. Para todo o resto, você precisa de uma estratégia, não de um valor padrão.
1. Cache-aside
O caminho mais comum. A aplicação olha o cache primeiro. Achou, devolve. Não achou, vai no banco, grava no cache, devolve. Simples. Resolve talvez 80% dos casos.
O preço: entre a atualização no banco e o vencimento, o dado está velho. Se isso importa, você precisa de invalidação ativa. Torcer para o relógio ser gentil não é plano.
2. Write-through
Toda escrita vai para o banco e para o cache ao mesmo tempo. O cache fica sempre atual. Cada escrita fica mais lenta, porque você paga duas vezes. Vale a pena quando leitura é muito maior que escrita.
3. Write-behind
A escrita entra no cache primeiro. A persistência no banco acontece de forma assíncrona. A latência de escrita fica mínima. Se o cache morrer antes de descarregar, você perde dado. Eu uso com cautela, normalmente para métrica e contador, nunca para dinheiro.
4. Invalidação por evento
Quando o registro muda, um evento dispara e o cache é derrubado de propósito. Pub/sub do Redis ou CDC do Postgres. Dado fresco sem esperar o TTL. Mais peças móveis. E honesto sobre o frescor.
5. Stale-while-revalidate
Devolve o valor em cache na hora, mesmo vencido, e atualiza em segundo plano. O usuário sempre recebe resposta rápida. O número pode estar trinta segundos atrasado. Ótimo para dashboard, listagem e qualquer lugar onde consistência eventual é aceitável.
Armadilhas que eu recuso
Estouro de cache
Milhares de requisições chegam, a chave acabou de vencer e todas caem no banco. Coloque trava na reconstrução. Uma requisição reconstrói. As outras esperam ou recebem o valor velho.
Cachear dado que muda a cada requisição
Serializa, guarda, desserializa. Muitas vezes fica mais lento do que ir direto no banco. Cache só se paga com taxa de acerto alta.
Cache sem número de acerto
Se você não enxerga a taxa de acerto, não sabe se o cache está ajudando ou queimando CPU para fazer teatro.
Escolha o padrão pelo tipo de dado, não pelo padrão que você decorou num post. TTL é ferramenta. Não é personalidade.