Кешът, който добави латентност
Добавихме 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
Урок: Кеширайте данни с много четене и редки промени. Не данни с много писане и волатилни.