Кэширование (Redis)
Redis
Что это такое
Кэш держит копию данных, которые дорого получить, в месте, откуда их быстро читать. Для этого обычно и берут Redis — хранилище «ключ — значение» в памяти, — а заодно для сессий, счётчиков, ограничения частоты и очередей. Живя в памяти, оно читает и пишет куда быстрее базы данных. Платой служат небольшой размер хранилища и то, что его содержимое не источник истины.
Почему это важно
В большинстве приложений есть несколько чтений, случающихся гораздо чаще, чем меняются сами данные: страница товара, флаг функции, права пользователя. Если отдавать их из памяти, с базы снимается большая часть нагрузки, а с запроса — большая часть задержки; часто это самый крупный доступный выигрыш в производительности, и схемы менять для него не нужно. Однако у данных теперь две копии, и вторая может быть неверной; вся дисциплина как раз в том, чтобы этим управлять.
Что в этом треке
- Паттерны кэширования (05-backend-data/16-caching-redis/01-caching-patterns) — где сидит кэш, как он наполняется и что в нём хранится.
- Инвалидация (05-backend-data/16-caching-redis/02-invalidation) — как держать копию честной и что делать, когда она такой не стала.
Предварительные требования
- SQL и реляционные базы данных (05-backend-data/07-sql-relational-databases)
Что читать дальше
- SQL и реляционные базы данных (05-backend-data/07-sql-relational-databases) — источник истины, копией которого является этот кэш, поэтому читайте его первым.
- Внутреннее устройство баз данных (01-cs-fundamentals/04-database-internals) — что база делает с теми запросами, которые кэш не обслужил.
- Мониторинг и наблюдаемость (Prometheus / Grafana) (06-cloud-devops/18-monitoring-observability-prometheus-grafana) — как следят за долей попаданий и долей ошибок кэша.