06 / 25 · §4
Кэширование
Отдельная дисциплина: быстро отдаём, но рискуем устаревшими данными.
Нажми на схему, чтобы открыть в полном размере.
Главное
- Cache-aside — базовый паттерн: сначала кэш, при промахе — БД и запись в кэш с TTL.
- Инвалидация — «одна из двух труднейших вещей в CS». Стратегии: TTL, write-through, write-behind, cache-aside.
- Cache stampede — TTL истёк, 10 000 запросов разом ломятся в БД.
- Лечится: locking (один грузит, остальные ждут), early recompute, jitter в TTL.
Cache-aside
GET /user/123 → Redis
HIT → вернуть
MISS → PostgreSQL → записать в Redis (TTL) → вернуть Когда Redis не нужен
Нет реальной проблемы latency или нагрузки — Redis это лишний stateful-компонент, который тоже может упасть.