Перейти к содержанию

Redis

Redis служит слоем кеширования, который снижает нагрузку на базу данных и сокращает время отклика до миллисекунд. Наше частое решение для управления сессиями, rate limiting и очередей задач с BullMQ.

Особенности

  • Хранилище ключ-значение в памяти
  • Кеширование на основе TTL
  • Обмен сообщениями Pub/Sub
  • Очереди задач BullMQ
  • Механизм распределенных блокировок
  • Высокая доступность с Cluster и Sentinel

Варианты использования

  • Кеширование ответов API
  • Управление пользовательскими сессиями
  • Rate limiting и защита от DDoS
  • Очереди фоновых задач
  • Таблицы лидеров (leaderboard)

Подробнее

Высокоскоростное кеширование с Redis

Redis (Remote Dictionary Server) представляет собой open source хранилище структур данных, работающее в оперативной памяти. Способный выполнять миллионы операций в секунду, Redis идеален для кеширования запросов к базе данных, управления сессиями и организации коммуникации в реальном времени с помощью паттернов pub/sub.

В проектах Detartech мы развертываем Redis на нескольких уровнях. Мы храним ответы API и результаты запросов к базе данных с помощью кеширования на основе TTL, снижая нагрузку на базу данных на 60-80% для повторяющихся запросов. Мы управляем очередью задач через библиотеку BullMQ, асинхронно обрабатывая фоновые задачи, такие как отправка e-mail, генерация отчетов и доставка webhook. Мы также предпочитаем Redis для реализации rate limiting и распределенных блокировок.

Где Detartech использует Redis?

Redis служит нашим основным инструментом для слоя кеширования. Самый конкретный пример связан с Biletico: когда в перенятой платформе продажи билетов заново строились интерфейс, схема рассадки на canvas и процесс оплаты, в стек Next.js и Node.js было встроено кеширование на Redis, а для данных использовалась MongoDB. Подход, описанный на странице услуги масштабирования бэкенда, действует и здесь: срок жизни каждой записи кеша и событие, при котором она сбрасывается, прописываются заранее, а то, что не попадает в кеш, фиксируется как отдельное решение.

Когда Redis подходит?

Redis подходит, если одни и те же данные читаются снова и снова с короткими интервалами, если под нагрузкой первой ломается база данных или если краткоживущим данным, таким как сессии, ограничение частоты запросов и очереди фоновых задач, нужен быстрый доступ. Когда измеряется доля попаданий в кеш, его выигрыш тоже становится отслеживаемым.

Когда Redis не решает проблему?

Если медленная работа вызвана запросом без индекса или запросами, повторяющимися в цикле, кеш скрывает проблему, а не устраняет ее; сначала читается план запроса. На экранах, где каждое чтение должно показывать самое свежее значение, кеш повышает риск устаревших данных, а система с устаревшими данными обходится дороже медленной. Для постоянных реляционных данных основным хранилищем у нас служит не Redis, а база данных вроде PostgreSQL.

Что мы создали с этим?

Используем эту технологию в вашем проекте

Наша команда специализируется на этом стеке. Давайте вместе оценим ваш проект.

Запросить бесплатную консультацию