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-компонент, который тоже может упасть.