Кэш — механизм, который часто используют как «волшебную кнопку» для ускорения системы — достаточно добавить Redis, и всё работает быстрее. Есть обманчивое восприятие механизма кэширования — будто мы можем радикально изменить производительность системы, снизить затраты на инфраструктуру и даже повлиять на бизнес-метрики. Почти в каждом проекте наступает момент, когда кто-то говорит: «Давайте просто закэшируем».
Обычно после этого система становится быстрее — и одновременно сложнее, опаснее и менее предсказуемой. Сегодня я хочу рассказать вам о неочевидных на первый взгляд проблемах и подходах к кэшированию. Проблема: Есть популярный ресурс с высокой частотой запросов (request rate), который мы кэшируем на определенное время, например TTL 300 секунд. После того как время жизни кэша истекло, все запросы идут в ваш бэкенд, пытаясь обновить кэш. Решение: Использовать различные подходы обновления кэша, один из них — вероятностное обновление кэша. Идея очень проста: при каждом чтении из кэша