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

Что такое Redis и почему он такой быстрый

Основы3 мин

Коротко

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

Коротко о Redis

Redis — это хранилище данных в формате ключ-значение, которое держит всё в оперативной памяти. Вы сохраняете значение под ключом, например session:42, и потом мгновенно получаете его по этому ключу.

Обычно Redis не заменяет основную базу, а работает рядом с ней: PostgreSQL или MySQL хранят надёжные данные, а Redis ускоряет то, что запрашивается часто или должно работать очень быстро.

Почему Redis такой быстрый

  • Данные в памяти. Чтение из RAM на порядки быстрее, чем с диска. Это главная причина.
  • Простые операции. Нет сложного планировщика запросов и JOIN: команда точно знает, где лежат данные, и у большинства операций предсказуемая сложность.
  • Однопоточное выполнение команд. Команды выполняются по очереди, поэтому не нужны блокировки, а каждая команда атомарна. Сетевой ввод-вывод при этом обрабатывается эффективно, без ожидания каждого клиента.
  • Лёгкий протокол и оптимизированное внутреннее представление структур.

Обратная сторона однопоточности: одна медленная команда, например перебор всех ключей через KEYS *, задерживает всех остальных клиентов.

Структуры данных

Значение в Redis — не только строка. Это и делает его универсальным инструментом.

ТипЧто этоТипичная задача
StringsСтрока или числоКэш страницы, счётчик просмотров
HashesНабор полей внутри ключаПрофиль пользователя, корзина
ListsУпорядоченный списокПростая очередь задач, лента событий
SetsМножество уникальных значенийУникальные посетители, теги
Sorted setsМножество с числовым рейтингомТаблица лидеров, топ товаров

Несколько команд для примера:

SET page:home "<html>..." EX 300   # кэш на 5 минут
GET page:home
INCR views:article:15              # атомарный счётчик
HSET user:42 name "Aliya" city "Tashkent"
LPUSH queue:emails "order-1001"
SADD visitors:2026-03-01 "user:42"
ZADD leaderboard 1500 "player:7"
ZRANGE leaderboard 0 -1 WITHSCORES

Параметр EX задаёт время жизни ключа (TTL): по его истечении Redis удалит ключ сам. Для кэша и сессий это основной механизм.

Сохранение на диск

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

  • RDB (снимки). Периодически сохраняет всю базу в файл. Компактно и быстро восстанавливается, но изменения после последнего снимка при сбое теряются.
  • AOF (журнал команд). Записывает каждую операцию изменения. Потерь меньше, частоту записи на диск можно настроить, но файл больше.
  • RDB + AOF вместе — частый выбор, когда данные нужно сохранять.
  • Без сохранения — для чистого кэша, который всегда можно восстановить из основной базы.

Ограничения хранения в RAM

  • Объём. Все данные должны помещаться в память сервера, а память дороже диска.
  • Переполнение. Когда достигнут лимит maxmemory, Redis действует по выбранной политике вытеснения: например, удаляет давно не использованные ключи или отказывает в записи. Для кэша это нормально, для важных данных — опасно.
  • Риск потери данных. Даже с сохранением на диск возможна потеря последних изменений при сбое, в зависимости от настроек.
  • Нет сложных запросов. Искать «всех пользователей из Ташкента старше 30» Redis не умеет так, как SQL.

Типичные сценарии

  • Кэш ответов базы и API.
  • Сессии пользователей и токены.
  • Ограничение частоты запросов (rate limiting).
  • Очереди фоновых задач.
  • Счётчики, рейтинги, онлайн-статусы.
  • Pub/Sub для простых уведомлений между сервисами.

Частые ошибки

  • Хранить в Redis единственную копию важных данных без настроенного сохранения.
  • Не задавать TTL ключам кэша — память постепенно заполняется.
  • Использовать KEYS * на рабочем сервере вместо SCAN.
  • Открывать Redis в интернет без пароля и сетевых ограничений.

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

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

Поможем с этим

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

Обсудить проект

Читайте также

Есть идея или задача? Расскажите нам

Ответим в течение рабочего дня и предложим решение. Консультация бесплатная.