devterview_$ iniciar simulação

Cache-aside, TTL e o thundering herd

DifícilSêniorCache

Pergunta

Descreva o padrão cache-aside com Redis e o problema do 'thundering herd' quando uma chave popular expira.

Resposta esperada

Cache-aside: a aplicação lê do Redis; no miss, busca no banco, grava no Redis com um TTL e retorna. Escrita no banco invalida (deleta) a chave. Simples e resiliente (se o Redis cai, ainda funciona mais lento). Thundering herd (ou cache stampede): uma chave muito acessada expira, e nesse instante centenas de requisições dão miss ao mesmo tempo e vão todas ao banco recomputar o mesmo valor — pico que pode derrubar o banco. Mitigações: um lock/mutex curto pra que só uma requisição recompute e as outras esperem ou sirvam o valor antigo; recomputação probabilística antecipada (renovar antes de expirar); jitter no TTL pra não expirar tudo junto; ou 'stale-while-revalidate' servindo o valor vencido enquanto uma atualiza em background.

Por que perguntam isso

Pergunta pleno/sênior. Termos que indicam experiência: 'cache stampede', 'jitter no TTL', 'stale-while-revalidate', 'lock de recomputação'.

#cache-aside#thundering-herd#ttl#stampede
publicidade

Relacionadas