Cache stampede — одновременный пересчёт одного дорогого значения множеством запросов после промаха. При 5000 запросах в секунду это может перегрузить БД и вызвать каскад тайм-аутов.
Что такое Cache Stampede (также Cache Missile или Thundering Herd)? Представьте, что из кэша Redis одновременно удалился ключ с тяжелым отчетом, который запрашивают 5000 пользователей в секунду. Что произойдет со слоем БД и как это предотвратить?
Cache stampede — одновременный пересчёт одного дорогого значения множеством запросов после промаха. При 5000 запросах в секунду это может перегрузить БД и вызвать каскад тайм-аутов.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Cache stampede — одновременный пересчёт одного дорогого значения множеством запросов после промаха. При 5000 запросах в секунду это может перегрузить БД и вызвать каскад тайм-аутов.
Разрешите одному исполнителю обновлять отчёт, а остальным отдавайте допустимую устаревшую версию или ограниченно ждите. После захвата lock повторно проверьте кеш. Используйте TTL с разбросом, раннее обновление, ограничения нагрузки и lease с владельцем. Просто увеличить TTL недостаточно: первое заполнение и удаление ключа всё равно могут вызвать лавину.