Добавихме Redis кеш за ускоряване. Той добави 50ms латентност.

Какво кеширахме:

  • Потребителски профил (променя се при всяка заявка)
  • Количка за пазаруване (специфична за потребител, волатилна)
  • Броячи на наличности в реално време

Проблемът:

  • Cache hit rate: 3%
  • 97% от заявките: cache miss + DB заявка
  • Плюс мрежов round-trip до Redis: 2ms
  • Плюс сериализация/десериализация: 5ms
  • Краен резултат: по-бавно от без кеш

Какво трябваше да кешираме:

  • Продуктов каталог (много четене, рядко се променя)
  • Дърво на категории (статично)
  • Feature flags (глобални, рядко се променят)
  • Изчислени агрегации (скъпи за калкулиране)

Математика на кеша:

Полза = (hit_rate × db_latency) - cache_overhead
                                    Ако полза < 0, кешът ви вреди

Поправена версия:

  • Премахнахме волатилни данни от кеша
  • Добавихме статично съдържание с дълъг TTL
  • Hit rate: 3% → 85%
  • P50 латентност: 150ms → 40ms

Урок: Кеширайте данни с много четене и редки промени. Не данни с много писане и волатилни.


← Назад към Научени Уроци