Реализация кэширования на бэкенде
(продолжение предыдущего поста)
→ Кэширование — это процесс хранения часто используемых данных в быстром слое хранения для снижения задержки и нагрузки на бэкенд.
→ Оно повышает производительность, масштабируемость и удобство использования систем бэкенда с высокой нагрузкой.
✓ Почему кэширование важно
→ Сокращает количество повторяющихся запросов к базе данных.
→ Ускоряет время ответа API.
→ Снижает нагрузку на сервер и базу данных.
→ Повышает масштабируемость системы.
✓ Распространённые уровни кэширования
→ Клиентский кэш → кэш браузера, кэш мобильного приложения.
→ Кэш CDN → хранит статические ресурсы ближе к пользователям.
→ Кэш приложения → кэширование в оперативной памяти внутри сервисов бэкенда.
→ Кэш базы данных → кэширование результатов запросов.
✓ Популярные технологии кэширования
→ Redis → хранилище данных в оперативной памяти, поддерживает сохранение данных и сложные структуры данных.
→ Memcached → простое и высокоскоростное кэширование по принципу «ключ‑значение».
→ Кэши CDN → Cloudflare, CloudFront для статического контента.
✓ Стратегии кэширования
→ Cache‑Aside (отложенная загрузка)
✓ Приложение сначала проверяет кэш.
✓ При отсутствии данных в кэше извлекает их из базы данных и сохраняет в кэш.
→ Write‑Through Cache (запись через кэш)
✓ Данные записываются в кэш и базу данных одновременно.
✓ Обеспечивает согласованность данных.
→ Write‑Behind (Write‑Back) Cache (отложенная запись)
✓ Записи сначала попадают в кэш.
✓ База данных обновляется асинхронно.
→ Read‑Through Cache (чтение через кэш)
✓ Кэш автоматически загружает данные из базы данных при отсутствии в кэше.
✓ Что стоит кэшировать
→ Часто используемые данные.
→ Запросы с преобладанием операций чтения.
→ Конфигурационные данные.
→ Данные сессии.
→ Вычисленные или агрегированные результаты.
✓ Стратегии аннулирования кэша
→ Временное устаревание (TTL) → данные автоматически удаляются по истечении заданного времени.
→ Аннулирование на основе событий → кэш очищается при наступлении определённого события.
→ Ручная очистка кэша → принудительное удаление данных из кэша.
→ Версионированные ключи кэша → использование ключей с версиями для управления актуальностью данных.
✓ Типичные проблемы
→ Использование устаревших данных.
→ Несогласованность кэша.
→ «Штурм кэша» (*cache stampede*) при высокой нагрузке.
→ Ограничения по объёму памяти.
✓ Лучшие практики
→ Всегда указывайте TTL для кэшированных данных.
→ Избегайте кэширования сильно изменчивых данных.
→ Тщательно подбирайте ключи кэша.
→ Отслеживайте соотношение попаданий и промахов в кэш.
→ Комбинируйте кэширование с индексированием базы данных.
Post #3060
1.92K