Acelere leituras com cache
Escolha um padrão de cache, uma política de remoção e um jeito de manter os dados atualizados.
- Descrever os padrões cache-aside, write-through e write-back.
- Explicar a remoção por LRU e a expiração por TTL.
- Reconhecer problemas de invalidação, como dados desatualizados e cache stampede.
Um cache guarda uma cópia dos dados num lugar mais rápido - na memória em vez do disco, ou na borda da rede em vez do outro lado do oceano. Ele troca atualidade e memória por velocidade e por menos carga na fonte da verdade. Há caches em todas as camadas: no navegador, numa CDN para arquivos estáticos, num cache de aplicação como Redis ou Memcached, e no buffer pool do próprio banco de dados.
Padrões de cache
- Cache-aside (carregamento sob demanda): a aplicação consulta o cache; se não encontrar (miss), lê o banco de dados e preenche o cache. É o padrão mais comum.
- Write-through: as escritas vão para o cache e para o banco de dados juntas. As leituras saem atualizadas, mas as escritas ficam mais lentas.
- Write-back (write-behind): as escritas vão para o cache e são gravadas no banco de dados depois. É rápido, mas dados podem se perder se o nó de cache falhar antes.
Caches têm tamanho limitado, então removem entradas. O LRU (least recently used) descarta a entrada que está há mais tempo sem ser usada; o LFU descarta a menos usada. Um TTL expira as entradas depois de um tempo definido, o que limita o quanto elas podem ficar desatualizadas.
O ganho depende da taxa de acerto (hit ratio). Com 90% de acerto, um cache de 1 ms e um banco de dados de 20 ms, a leitura média leva 0,9 × 1 + 0,1 × 20 = 2,9 ms - e o banco de dados recebe só um décimo das leituras. A invalidação é a parte difícil: quando os dados mudam, você precisa atualizar ou apagar a cópia em cache, ou aceitar dados desatualizados até o TTL.
Prática: ajuste um cache
Experimente
Até 15 XPMantenha a chave quente no cache
A maioria das requisições é para home, como num site real. Verde é um acerto, e vermelho é um erro que chega ao banco de dados.
- Com capacidade 2, compare FIFO e LRU. O que acontece com
home? - Aumente a capacidade um passo de cada vez. Quando adicionar memória deixa de ajudar, e por que ainda há erros?
- homemiss
- amiss
- homehit
- bmiss
- homemiss
- cmiss
- homehit
- amiss
- homemiss
- dmiss
- homehit
- bmiss
- homemiss
- cmiss
- homehit
- homehit
No cache ao final: home, c
- Taxa de acerto
- 31%
- Leituras que chegam ao banco
- 11 de 16
- Leitura média
- 14,1 ms
Experimente
Até 15 XPQual padrão de cache serve?
Diga o padrão e explique por quê. É isso que os entrevistadores querem ouvir.
“Perfis de usuários que são muito mais lidos do que escritos.”
“Um preço de produto que precisa estar atualizado logo depois de uma alteração.”
“Um contador de visualizações com enorme volume de escrita, em que perder algumas não tem problema.”
“Uma página de artigo em que alguns minutos de atraso não têm problema.”
Principais conclusões
Cache-aside é o padrão; write-through favorece dados atualizados; write-back favorece a velocidade de escrita, com risco à durabilidade.
LRU e TTL limitam o tamanho do cache e o quanto ele fica desatualizado.
Sempre planeje a invalidação e proteja as chaves quentes contra stampedes.
Quiz da aula
6 perguntas · aprovação com 5 acertos · até 50 XP
Ao passar, você conclui a aula e mantém sua sequência. As perguntas erradas voltarão em sessões de revisão.
Dúvidas sobre esta lição
Travou em algum ponto? Pergunte. Descobriu algo? Compartilhe. Explicar também é uma ótima forma de aprender.
Carregando publicações…