Кеширование
Кеш хранит ответ на дорогостоящий вопрос, чтобы вам не приходилось задавать его снова. Если ваша главная страница выполняет один и тот же тяжёлый запрос для каждого посетителя, закешируйте результат в Redis на 60 секунд и отдавайте его мгновенно.
Кеширование — это оптимизация производительности, а не источник истины. Классическая ловушка новичка — забыть про инвалидацию кеша: закешированная копия устаревает, и пользователи видят старые данные. Эмпирическое правило: кешируйте только тогда, когда вы измерили реальное узкое место, и всегда имейте чёткое правило, когда закешированное значение истекает или обновляется.
Есть две чистые стратегии, и их путаница вызывает большинство багов кеша. Истечение по времени (TTL) говорит «это значение годно 60 секунд, затем выбрось его» — просто и нормально, когда слегка устаревшие данные безвредны (счётчик просмотров, лента главной страницы). Инвалидация по событию говорит «удали закешированное значение в момент, когда меняются исходные данные» — корректно, но вы должны помнить делать это на каждом пути записи, и именно там люди оступаются. Когда сомневаетесь, предпочитайте короткий TTL: значение, устаревшее максимум на минуту, — меньший баг, чем значение, устаревшее навсегда, потому что вы забыли одну инвалидацию.