Паттерны кеширования: cache-aside, write-through, write-behind, refresh-ahead, cache stampede + lock.
Кеш — слой между клиентом и медленным хранилищем (DB, API), который ускоряет чтение за счёт хранения горячих данных в памяти. Главные вопросы: кто пишет в кеш, когда инвалидируется, что делать на miss.
5 базовых паттернов покрывают 95% случаев.
Самый частый паттерн. Приложение само решает: читать кеш, на miss идти в БД, после — backfill. Простой, отказоустойчивый: смерть кеша не ломает приложение, только замедляет.
Если в кеше нет данных, приложение идёт в БД и кладёт результат в кеш. Следующий запрос отрабатывает быстро.
Все записи идут синхронно в кеш и БД. Кеш всегда консистентен с БД. Цена: write latency = max(cache, db). Применять когда read-after-write критичен.
Записи быстро принимаются в кеш, потом батчем сбрасываются в БД. Огромный throughput на записи. Риск: кеш упал → потеряли buffer. Подходит для metrics, counters.
Когда популярный ключ протухает, тысячи запросов одновременно бомбят БД (все промахнулись по кешу). Решение: lock на rebuild — один рассчитывает, остальные ждут.