Carregando
0x40Lição 5 de 13

Acelere leituras com cache

Escolha um padrão de cache, uma política de remoção e um jeito de manter os dados atualizados.

20 min Questionário com 6 perguntas
Ao final desta lição, você saberá
  • 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 XP

Mantenha 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.

  1. Com capacidade 2, compare FIFO e LRU. O que acontece com home?
  2. Aumente a capacidade um passo de cada vez. Quando adicionar memória deixa de ajudar, e por que ainda há erros?
Política de remoção
  1. homemiss
  2. amiss
  3. homehit
  4. bmiss
  5. homemiss
  6. cmiss
  7. homehit
  8. amiss
  9. homemiss
  10. dmiss
  11. homehit
  12. bmiss
  13. homemiss
  14. cmiss
  15. homehit
  16. 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 XP

Qual padrão de cache serve?

Diga o padrão e explique por quê. É isso que os entrevistadores querem ouvir.

0 de 4 classificadosPontuação 0/0
  • “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…