Кеш — це не “увімкнути Redis”, а спроєктувати правила
При high‑load проблеми часто вирішуються не “потужнішим сервером”, а правильним кешуванням. Але кеш без інвалідації і метрик швидко перетворюється на джерело багів.
1) Рівні кешу
- CDN/edge для статичних сторінок/медіа та частини API.
- Application cache (Redis) для довідників, профілів, конфігів.
- DB cache (індекси, матеріалізовані представлення) — коли дані складні.
2) Ключі та TTL
- Ключ має включати параметри: locale, tenant, role, filters.
- TTL різний для різних даних: довідники — довше, ціни/залишки — коротше.
3) Інвалідація: 3 практичні підходи
- Time-based: “сам протухне” — простий, але не завжди точний.
- Event-based: подія “ціна змінилась” → очищаємо ключі.
- Versioning: додаємо версію в ключ (user:123:v7) — зручно при масових змінах.
4) Захист від cache stampede
- Singleflight/locking на перерахунок.
- Stale‑while‑revalidate: віддаємо старе, але оновлюємо в фоні.
5) Метрики
Без hit rate, latency і error rate ви не знаєте, чи кеш допомагає. Додай метрики по ключових групах ключів.
Підсумок
Кешування дає найбільший ефект у high‑load, коли є правила ключів/TTL, стратегія інвалідації і метрики. Тоді навантаження знімається керовано, без “магії”.