Лев Корольков
Руководитель IT-департамента EFSOL Oblako
Время чтения: 17 мин

Redis

Быстрое хранилище в памяти

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

Название Redis исторически связано с выражением Remote Dictionary Server. По базовой модели приложение сохраняет данные по ключу и затем получает их по этому ключу.

Например, Backend может сохранить результат тяжелого SQL-запроса в Redis на несколько минут. Следующий пользователь получит данные из памяти без повторного обращения к основной базе.

Что такое Redis простыми словами

Redis можно представить как очень быстрый общий словарь, доступный нескольким приложениям через сеть.

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

user:125:name = Иван

Приложение знает ключ user:125:name и быстро получает связанное с ним значение.

Redis часто размещается между приложением и более медленным постоянным хранилищем, чтобы ускорить доступ к часто используемым данным.

Для чего используется Redis

Redis подходит для задач, где важны низкая задержка и большое количество операций.

  • кэширование;
  • хранение пользовательских сессий;
  • Rate Limiting;
  • счетчики;
  • временные токены;
  • очереди задач;
  • распределенные блокировки;
  • Leaderboard;
  • Pub/Sub;
  • быстро изменяющиеся временные состояния.

Redis и Cache

Самый известный сценарий использования Redis — кэширование.

Представим интернет-магазин, который каждый раз выполняет сложный SQL-запрос для формирования главной страницы. Если результат меняется редко, его можно временно сохранить в Redis.

Первый запрос обращается к базе, а последующие в течение заданного времени получают готовый результат из Cache.

Как работает кэширование через Redis

  1. Backend получает запрос пользователя.
  2. Проверяет наличие значения в Redis.
  3. Если значение найдено, возвращает его.
  4. Если Cache пуст, обращается к основной базе.
  5. Сохраняет результат в Redis.
  6. Возвращает данные пользователю.

Так уменьшается нагрузка на PostgreSQL, MySQL, MongoDB или другой источник данных.

Cache Hit и Cache Miss

Cache Hit означает, что нужное значение найдено в Redis.

Cache Miss возникает, когда ключ отсутствует и приложению приходится обращаться к основному источнику.

СостояниеЧто происходит
Cache HitДанные получаются из Redis
Cache MissПриложение обращается к основной базе

Доля Cache Hit является одной из важных метрик эффективности кэширования.

TTL в Redis

TTL, или Time To Live, определяет время жизни ключа.

Например, можно сохранить данные на 300 секунд. После истечения этого времени Redis автоматически удалит значение.

TTL особенно полезен для Cache, временных токенов и сессий.

Почему TTL важен

Если кэшировать данные без срока жизни, приложение может слишком долго показывать устаревшую информацию.

Кроме того, Redis будет постепенно заполняться ключами, которые уже никому не нужны.

Правильный TTL выбирается исходя из того, насколько быстро меняются данные и насколько критична их актуальность.

Redis и постоянная база данных

Redis часто работает рядом с основной базой, а не вместо нее.

Например, PostgreSQL хранит пользователей и заказы как основное долговременное хранилище, а Redis содержит результаты популярных запросов и пользовательские сессии.

Основная базаRedis
Постоянные бизнес-данныеБыстрые и часто временные данные
Сложные запросы и связиБыстрый доступ по ключу и структурам
Основной источник истиныЧасто вспомогательный слой

Redis и SQL

Redis не является классической SQL-СУБД.

В нем нет обычной модели таблиц, JOIN и SQL-запросов, характерных для PostgreSQL или MySQL.

Приложение работает с ключами и специальными структурами данных.

Поэтому Redis обычно не используют как прямую замену реляционной базе для сложной учетной системы.

Redis и NoSQL

Redis относят к NoSQL-хранилищам.

Его базовая модель отличается от реляционных таблиц, а данные представлены ключами и специализированными структурами.

При этом термин NoSQL очень широкий: MongoDB, Redis и графовые базы решают разные задачи.

Key-Value модель

Простейшая операция Redis — сохранить значение по ключу.

SET user:125:name "Иван"

После этого значение можно получить:

GET user:125:name

Поиск по конкретному ключу выполняется очень быстро, поскольку Redis специально оптимизирован под подобные операции.

Именование ключей

Ключи лучше создавать по понятному соглашению.

user:125:profile
product:42:price
session:abc123

Такая структура облегчает диагностику и уменьшает вероятность конфликтов имен.

При этом ключ не должен становиться слишком длинным без необходимости.

Какие структуры данных поддерживает Redis

Redis интересен тем, что работает не только с простыми строками.

СтруктураТипичный сценарий
StringCache, токены, счетчики
HashНабор полей объекта
ListПоследовательность элементов
SetУникальные значения
Sorted SetРейтинги и упорядоченные наборы
StreamПотоки сообщений и событий

Redis String

String — базовый тип Redis.

В нем можно хранить текст, число, сериализованный JSON или другое небольшое значение.

Strings часто используются для Cache и счетчиков.

Redis Hash

Hash хранит набор полей и значений внутри одного ключа.

Например, профиль пользователя может содержать name, city и status.

user:125
name = Иван
city = Москва
status = active

Это удобно для небольших объектов, если приложение часто изменяет отдельные поля.

Redis List

List — упорядоченная последовательность значений.

Элементы можно добавлять с одной или другой стороны.

Lists могут использоваться для простых очередей, истории последних операций и других последовательных данных.

Redis Set

Set хранит уникальные элементы без обычного дублирования.

Например, можно хранить идентификаторы пользователей, которые уже участвовали в акции.

Redis также позволяет выполнять операции над наборами, например находить пересечения.

Sorted Set

Sorted Set хранит уникальные элементы вместе с числовым score и автоматически поддерживает их порядок.

Это удобно для рейтингов.

Например, игрок имеет идентификатор и количество очков. Redis позволяет быстро получить лидеров и позицию конкретного пользователя.

Redis и Leaderboard

Leaderboard — рейтинг пользователей или объектов.

Sorted Set хорошо подходит для такой задачи, потому что элементы автоматически упорядочиваются по score.

Подобная модель применяется в играх, программах лояльности и системах рейтингов.

Redis Streams

Streams используются для хранения последовательности сообщений или событий.

Они позволяют организовать более развитую обработку событий по сравнению с простым списком.

Например, несколько Workers могут обрабатывать поток поступающих задач.

Redis Pub/Sub

Pub/Sub реализует модель публикации и подписки.

Один сервис публикует сообщение в Channel, а подписанные клиенты получают его.

Например, Backend сообщает о новом событии нескольким работающим экземплярам приложения.

Особенность Pub/Sub

Pub/Sub полезен для событий в реальном времени, но не следует автоматически считать его надежной очередью.

Если подписчик был отключен в момент публикации, ему может быть нечего обработать после возвращения.

Для задач, где сообщения нельзя терять, необходимо выбирать механизм с соответствующими гарантиями хранения и подтверждения.

Redis и Message Queue

Redis можно использовать как основу для очередей фоновых задач.

Backend добавляет задание, а Worker получает его и обрабатывает независимо от пользовательского HTTP Request.

Например, отправка email выполняется асинхронно после оформления заказа.

Redis и Background Worker

Worker может получать задачи из Redis и выполнять ресурсоемкие операции.

Это уменьшает время ответа основного Backend.

Пользователь получает подтверждение заказа, а письмо, отчет или обработка изображения выполняются позже отдельным процессом.

Redis и сессии

Redis часто используют для хранения серверных пользовательских сессий.

После входа Backend создает Session ID и сохраняет связанную информацию в Redis.

Несколько экземпляров Backend затем используют общее хранилище и могут обслуживать одного пользователя независимо друг от друга.

Почему Redis удобен для сессий

Сессия регулярно читается при HTTP Requests и обычно имеет ограниченное время жизни.

Redis хорошо соответствует этим требованиям: быстрый доступ и TTL позволяют автоматически удалять истекшие сессии.

Redis и JWT

При полностью stateless JWT-сценарии Backend не обязан хранить каждую сессию в Redis.

Но Redis может использоваться для временного Blacklist отозванных токенов, Refresh Token или другой серверной логики.

Выбор зависит от модели аутентификации.

Redis и Rate Limiting

Rate Limiting ограничивает количество операций пользователя или клиента за период.

Redis подходит для этой задачи благодаря быстрым атомарным счетчикам и TTL.

Например, API разрешает не более 100 запросов в минуту для одного API Key.

Простой счетчик

Redis умеет атомарно увеличивать числовое значение.

Это удобно для количества просмотров, попыток входа или запросов к API.

Атомарность позволяет нескольким Backend-инстансам безопасно работать с одним счетчиком.

Redis и временные коды

Коды подтверждения часто действуют только несколько минут.

Redis позволяет сохранить код с TTL, после чего значение автоматически исчезнет.

Это удобнее ручной периодической очистки временных записей в основной базе.

Redis и распределенные блокировки

В распределенной системе нескольким процессам иногда необходимо договориться, кто выполняет конкретную операцию.

Redis можно использовать как компонент механизма Distributed Lock.

Например, только один Worker должен запускать определенную периодическую задачу.

Такие блокировки нужно проектировать осторожно, учитывая TTL, сбои и требования к корректности.

Почему простой Lock может быть опасен

Если процесс получил блокировку и завершился, Lock не должен оставаться навсегда.

Поэтому обычно используется ограниченное время жизни.

Также необходимо учитывать ситуации, когда операция работает дольше TTL или сеть временно разделяет компоненты системы.

Для критичных операций механизм координации следует выбирать особенно внимательно.

Cache Invalidation

Одна из самых сложных задач кэширования — своевременно удалить или обновить устаревшие значения.

Например, цена товара изменена в основной базе, но старое значение еще хранится в Redis.

Приложение должно иметь понятную стратегию Cache Invalidation.

Стратегии обновления Cache

Можно использовать короткий TTL, удаление ключа после UPDATE или непосредственное обновление Cache.

Выбор зависит от требований к актуальности.

Чем критичнее данные, тем осторожнее следует относиться к длительному Cache.

Cache-Aside

Cache-Aside — распространенная модель, при которой приложение самостоятельно управляет Cache.

  1. Backend ищет данные в Redis.
  2. При Cache Miss получает их из базы.
  3. Сохраняет результат в Redis.
  4. При изменении исходных данных удаляет или обновляет Cache.

Эта модель относительно проста и хорошо подходит для многих веб-приложений.

Cache Stampede

Cache Stampede возникает, когда популярный ключ одновременно истекает для большого количества запросов.

Тысячи клиентов получают Cache Miss и одновременно обращаются к основной базе.

В результате Cache, который должен был снижать нагрузку, становится причиной резкого всплеска.

Как уменьшить Cache Stampede

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

Конкретный подход зависит от требований к актуальности.

Cache Penetration

Cache Penetration возникает, когда пользователи постоянно запрашивают данные, которых нет ни в Cache, ни в основной базе.

Каждый запрос доходит до СУБД.

В некоторых сценариях полезно ненадолго кэшировать и факт отсутствия результата.

Eviction

Поскольку оперативная память ограничена, Redis должен понимать, что делать при достижении установленного предела.

В зависимости от политики система может удалять определенные ключи или отказывать в новых операциях.

Политику Eviction необходимо выбирать исходя из роли Redis.

Почему Redis использует много RAM

Основная ценность Redis — быстрый доступ к данным в памяти.

Поэтому размер Dataset должен соответствовать доступной оперативной памяти с учетом служебных накладных расходов.

Нельзя проектировать Cache на сотни гигабайт, не рассчитав реальное потребление ресурсов.

Redis и Persistence

Хотя Redis в первую очередь ассоциируется с памятью, он поддерживает механизмы сохранения данных на диск.

Они позволяют восстановить состояние после перезапуска в определенной степени.

Необходимо понимать, какие гарантии нужны конкретному приложению, поскольку Redis часто используется для данных разной критичности.

Snapshot

Один из подходов к Persistence — периодически сохранять состояние Dataset на диск.

Преимущество — относительно компактное представление.

Недостаток — между последним Snapshot и сбоем могут существовать еще не сохраненные изменения.

Append-only подход

Другой подход связан с последовательной записью операций изменения.

Это может уменьшать потенциальный объем потерянных последних данных, но требует дополнительных операций хранения.

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

Redis как основная база данных

Технически Redis способен хранить важные данные, но использовать его как единственный источник истины следует только после анализа требований.

Для бухгалтерских, финансовых и сложных реляционных данных PostgreSQL, MySQL или другая специализированная СУБД часто естественнее.

Redis особенно силен как высокоскоростной специализированный слой.

Redis и PostgreSQL

PostgreSQL и Redis часто используются вместе.

PostgreSQL хранит постоянные данные, а Redis ускоряет наиболее частые чтения.

Например, профиль пользователя хранится в PostgreSQL, а его часто запрашиваемое краткое представление — временно в Redis.

Redis и MySQL

С MySQL применяется похожая модель.

MySQL остается Source of Truth, а Redis снижает количество повторных SELECT.

Важно не допустить ситуации, когда Cache и основная база надолго расходятся.

Redis и MongoDB

MongoDB хранит BSON-документы как постоянные данные, а Redis может ускорять доступ к популярным документам или результатам Aggregation.

Таким образом, Redis полезен рядом как с SQL, так и с NoSQL базами.

Redis и Backend

Backend подключается к Redis через клиентскую библиотеку.

Сервис может читать Cache, записывать сессии, увеличивать счетчики и добавлять фоновые задачи.

Redis обычно располагается во внутренней инфраструктуре и не должен напрямую открываться Frontend.

Redis и Frontend

Браузер пользователя обычно не взаимодействует с Redis напрямую.

Frontend обращается к API, а Backend решает, брать данные из Cache или основной базы.

Так контролируются права доступа и внутреннее устройство системы.

Redis и API

Redis может заметно уменьшать latency API.

Например, GET /products/popular выполняет тяжелый запрос раз в минуту, а остальные Requests получают сохраненный результат из Cache.

Для пользователя API работает быстрее, а основная база получает меньше нагрузки.

Redis и микросервисы

В микросервисной архитектуре Redis может использоваться несколькими сервисами для Cache, Rate Limiting или координации.

При этом следует избегать ситуации, когда общий Redis превращается в неуправляемую базу, где все сервисы читают чужие внутренние ключи.

Границы ответственности должны оставаться понятными.

Redis и Docker

Для development Redis удобно запускать в Docker.

services:
 redis:
 image: redis

Backend подключается к контейнеру через внутреннюю Docker Network.

Если Persistence имеет значение, необходимо отдельно настроить Volume и параметры хранения.

Redis и Docker Compose

Docker Compose позволяет описать Backend, основную базу и Redis в одном окружении.

Например, API использует PostgreSQL для постоянных данных и Redis для Cache.

Так разработчик запускает весь необходимый стек одной командой.

Redis и Kubernetes

Redis можно запускать в Kubernetes, но при хранении важного состояния необходимо учитывать Stateful workload.

Нужно продумать Persistent Volumes, репликацию, восстановление и обновления.

Простой Deployment с несколькими независимыми pod не создает единое согласованное Redis-хранилище.

Redis в облаке

Redis можно администрировать самостоятельно или использовать Managed Service.

Управляемый сервис может брать на себя часть задач по развертыванию, обновлению, Backup и High Availability.

Команда приложения при этом продолжает отвечать за ключи, TTL, Cache Strategy и объем используемой памяти.

Replication

Redis может использовать репликацию, при которой дополнительные экземпляры получают копии данных.

Это применяется для повышения доступности и некоторых сценариев чтения.

Репликация сама по себе не означает, что данные защищены от логического удаления.

High Availability

Если Redis критичен для доступности приложения, необходимо предусмотреть отказ основного экземпляра.

Архитектура может включать реплики, мониторинг состояния и автоматизированное переключение.

Особенно это важно, если потеря Redis приводит не только к Cache Miss, но и к выходу пользователей из сессий или остановке очередей.

Redis Sentinel

Sentinel используется в определенных архитектурах Redis для мониторинга экземпляров и организации переключения при сбое основного узла.

Клиентскому приложению при этом необходимо корректно обнаружить изменение основного сервера.

High Availability следует обязательно тестировать в условиях реального отказа.

Redis Cluster

Redis Cluster используется для распределения данных между несколькими узлами и масштабирования Dataset.

Ключи разделяются по узлам согласно внутренней схеме распределения.

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

Когда нужен Redis Cluster

Если данные и нагрузка помещаются на одном надежном экземпляре, Cluster может быть избыточным.

Прежде чем усложнять архитектуру, стоит проверить TTL, размер значений, индексы основной базы и реальное использование Cache.

Redis и Backup

Если Redis используется только как воспроизводимый Cache, отдельный Backup может быть менее критичен.

Если в нем находятся уникальные очереди, сессии или бизнес-данные, требования меняются.

Стратегия резервирования должна соответствовать тому, можно ли восстановить содержимое из других источников.

RPO и RTO

Для критичного Redis необходимо определить RPO и RTO.

RPO показывает допустимую потерю последних данных, а RTO — максимальное время восстановления.

Для Cache эти требования могут быть мягкими, а для очереди важных задач — намного строже.

Redis и Observability

Redis требует мониторинга так же, как другие инфраструктурные компоненты.

Следует отслеживать использование памяти, количество операций, Cache Hit Ratio, Evictions, Connections и latency.

Если Redis достиг предела RAM и начал массово удалять ключи, это может резко увеличить нагрузку на основную базу.

Основные метрики Redis

МетрикаЧто показывает
Memory UsageОбъем используемой RAM
Cache Hit RatioЭффективность Cache
EvictionsКоличество удалений из-за нехватки памяти
Operations RateКоличество операций в секунду
ConnectionsКоличество клиентских подключений
LatencyЗадержку выполнения операций

Redis и Prometheus

Метрики Redis можно экспортировать в Prometheus через соответствующий exporter или интеграцию.

Grafana используется для дашбордов и анализа динамики.

Например, Alert может срабатывать при резком росте Evictions или заполнении памяти.

Redis и OpenTelemetry

Backend может включать вызовы Redis в Distributed Trace.

Так видно, получил ли пользовательский Request Cache Hit и сколько времени заняло обращение.

Это помогает оценить реальную пользу кэширования.

Redis и логирование

В журналах приложения полезно фиксировать ошибки подключения и некоторые аномалии Cache.

Но записывать каждое GET и SET в высоконагруженной системе обычно слишком дорого.

Лучше использовать агрегированные метрики и tracing с разумной выборкой.

Connection Pool

Приложения обычно повторно используют соединения с Redis через Pool.

Создавать новое TCP-соединение на каждый HTTP Request неэффективно.

Размер Pool должен соответствовать нагрузке и числу экземпляров Backend.

Redis и безопасность

Redis часто содержит сессии, токены и внутренние данные, поэтому его нельзя считать некритичным только из-за роли Cache.

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

Почему Redis нельзя открывать в интернет

Redis должен находиться во внутреннем сетевом сегменте или другом защищенном окружении.

Frontend работает через Backend, а внешний пользователь не получает прямого доступа к хранилищу.

Открытый Redis значительно увеличивает риск несанкционированного чтения, изменения или удаления данных.

Redis и секреты

Redis может технически хранить токены и временные секретные значения, но доступ к такому экземпляру должен быть строго ограничен.

Нельзя исходить из того, что оперативная память автоматически делает данные безопасными.

Модель защиты зависит от критичности информации.

Большие значения в Redis

Redis особенно эффективен для относительно небольших объектов, с которыми часто работают.

Хранить огромные файлы или многогигабайтные документы в памяти обычно экономически невыгодно.

Файлы лучше хранить в объектном хранилище, а Redis использовать для метаданных или Cache.

Почему не стоит кэшировать все

Если данные редко читаются, Cache только занимает память и усложняет приложение.

Кэшировать стоит то, что действительно создает заметную нагрузку или latency.

Перед внедрением полезно измерить проблемные запросы и определить ожидаемый эффект.

Типичные ошибки при работе с Redis

  1. Использовать Redis без ограничения памяти.
  2. Кэшировать данные навсегда без TTL.
  3. Не продумывать Cache Invalidation.
  4. Хранить слишком большие значения.
  5. Считать Redis полной заменой основной базы.
  6. Открывать сервис напрямую в интернет.
  7. Не отслеживать Evictions и Cache Hit Ratio.
  8. Использовать Pub/Sub как гарантированную очередь без анализа требований.
  9. Не учитывать Cache Stampede.
  10. Применять распределенные блокировки без учета сбоев и TTL.

Как правильно внедрить Redis

Шаг 1. Определить задачу

Сначала нужно понять, зачем Redis нужен: Cache, sessions, Rate Limiting, очередь или другой сценарий.

Шаг 2. Определить структуру ключей

Ключи должны иметь понятную и стабильную схему именования.

Шаг 3. Выбрать TTL

Для временных данных нужно заранее определить срок жизни.

Шаг 4. Настроить лимит памяти

Необходимо понимать максимальный Dataset и политику Eviction.

Шаг 5. Продумать отказ Redis

Приложение должно понимать, что делать, если Cache временно недоступен.

Шаг 6. Ограничить доступ

Redis следует размещать во внутренней инфраструктуре.

Шаг 7. Добавить мониторинг

Контролируйте RAM, Hit Ratio, Evictions, latency и Connections.

Шаг 8. Провести нагрузочное тестирование

Проверять нужно не только скорость Redis, но и поведение основной базы при его отказе.

Практический пример

Интернет-магазин хранит товары и заказы в PostgreSQL. Главная страница показывает 100 популярных товаров.

SQL-запрос для расчета списка требует агрегации большого количества продаж и начинает создавать заметную нагрузку.

Команда добавляет Redis. Первый Request выполняет запрос PostgreSQL и сохраняет результат в Redis с TTL 60 секунд.

Все следующие пользователи в течение минуты получают готовый список из Cache.

Чтобы одновременно истекший ключ не вызвал сотни параллельных тяжелых SQL-запросов, команда добавляет защиту от Cache Stampede.

Пользовательские сессии также хранятся в Redis с отдельным TTL.

Redis доступен только Backend-серверам через внутреннюю сеть. Для него настроены ограничение памяти и подходящая Eviction Policy.

Prometheus отслеживает Cache Hit Ratio и Evictions. После внедрения количество тяжелых запросов к PostgreSQL значительно уменьшается, а API быстрее отвечает пользователям.

Redis для бизнеса

Redis помогает бизнесу ускорять цифровые сервисы и уменьшать нагрузку на дорогие постоянные хранилища.

Это особенно заметно в системах с большим количеством повторяющихся запросов, авторизованных пользователей и частых коротких операций.

Но Redis добавляет новый инфраструктурный компонент. Команде необходимо управлять памятью, Cache Invalidation, доступностью и мониторингом.

Поэтому Redis эффективнее всего использовать для конкретно измеренной задачи, а не добавлять в архитектуру автоматически.

Когда стоит использовать Redis

  • нужно ускорить часто повторяющиеся запросы;
  • основная база испытывает нагрузку на чтение;
  • нужно хранить сессии;
  • необходим Rate Limiting;
  • нужны быстрые счетчики;
  • используются временные токены;
  • нужна простая очередь или поток событий;
  • требуется общий быстрый Cache для нескольких Backend-инстансов.

Когда Redis может быть избыточным

Если приложение небольшое, запросы к базе быстрые, а нагрузка низкая, Redis может только усложнить инфраструктуру.

Также он не является естественной заменой реляционной СУБД для сложных связанных бизнес-данных.

Перед внедрением стоит измерить latency и нагрузку и понять, какую конкретную проблему должен решить новый слой.

Связанные термины

ТерминСвязь с Redis
CacheОдин из основных сценариев использования Redis
Key-ValueБазовая модель хранения данных
TTLОпределяет срок жизни ключа
SessionЧасто хранится в Redis
Rate LimitingМожет строиться на быстрых счетчиках Redis
Pub/SubМодель публикации и подписки
Message QueueRedis может использоваться для очередей задач
Redis StreamsСтруктура для потоков сообщений
PostgreSQLЧасто используется как основная база рядом с Redis
MongoDBДокументная база, которую Redis может дополнять Cache
BackendОсновной клиент Redis в веб-приложении
PrometheusМожет использоваться для мониторинга Redis

Краткий итог

Redis — высокопроизводительное хранилище данных, ориентированное на работу в оперативной памяти. Оно поддерживает ключи, Strings, Hashes, Lists, Sets, Sorted Sets, Streams и другие структуры и широко используется для Cache, сессий, Rate Limiting, счетчиков и фоновых задач.

Redis особенно эффективен как дополнительный слой рядом с PostgreSQL, MySQL, MongoDB и другими постоянными базами. Он помогает уменьшить количество тяжелых запросов и снизить latency Backend.

При этом Redis требует правильной стратегии TTL, Cache Invalidation, управления памятью и отказоустойчивости. Для production необходимо ограничить сетевой доступ, отслеживать Cache Hit Ratio и Evictions и заранее понимать, что произойдет с приложением при временной недоступности Redis.

Частые вопросы

6 вопросов
Что такое Redis?

Redis — высокопроизводительное хранилище данных, которое в основном работает с информацией в оперативной памяти. Его используют для Cache, сессий, счетчиков, Rate Limiting, временных данных, очередей и других задач с низкой задержкой.

Чем Redis отличается от PostgreSQL или MySQL?

PostgreSQL и MySQL являются реляционными СУБД для постоянных связанных данных и SQL-запросов. Redis ориентирован на быстрые операции с ключами и структурами в памяти и часто используется как дополнительный Cache рядом с основной базой.

Что такое TTL в Redis?

TTL, или Time To Live, — срок жизни ключа. После его истечения Redis автоматически удаляет значение. TTL особенно полезен для Cache, пользовательских сессий, кодов подтверждения и временных токенов.

Можно ли использовать Redis как основную базу данных?

Технически Redis может сохранять данные и использовать Persistence, но выбор зависит от требований. Для сложных реляционных, финансовых и учетных данных специализированная постоянная СУБД часто подходит лучше, а Redis используется как быстрый дополнительный слой.

Что такое Cache Hit и Cache Miss?

Cache Hit означает, что нужное значение найдено в Redis и основная база не требуется. Cache Miss означает отсутствие значения в Cache, поэтому приложение получает его из основного источника и при необходимости сохраняет в Redis.

Зачем Redis нужен Backend-приложению?

Redis помогает Backend быстрее отвечать пользователям, уменьшать нагрузку на основную базу, хранить общие сессии нескольких серверов, реализовывать Rate Limiting, счетчики, временные токены и асинхронные очереди задач.

Была ли статья полезна?
Документ обновляется командой EFSOL. Свяжитесь с нами, если нашли неточность.
Нужна консультация?

Поможем спроектировать, развернуть и сопроводить облачную или гибридную инфраструктуру под задачи вашего бизнеса.

Ответим в течение часа в рабочее время
Заказать звонок

Оставьте свои данные для того, чтобы специалист с вами связался.

Заказать звонок

Оставьте свои данные для того, чтобы специалист с вами связался.