Redis
Redis — это размещаемая в памяти база данных ключ-значение, используемая также как распределённый кэш и брокер сообщений с опциональной поддержкой устойчивости[7]. Благодаря хранению данных в оперативной памяти и особенностям архитектуры, Redis обеспечивает низкую задержку при чтении и записи, что делает её особенно подходящей для задач кэширования. Redis является самой популярной NoSQL базой данных[8][9][10] и одной из самых популярных баз данных в целом[11].
Проект был разработан и поддерживался Сальваторе Санфилиппо (Salvatore Sanfilippo) с 2009 года[12]. С 2015 по 2020 год он возглавлял основную команду разработки проекта при поддержке компании Redis Ltd[13]. В 2020 году Санфилиппо покинул проект[14], но в ноябре 2024 года вернулся в компанию[15]. В 2021 году компания Redis Labs сменила название на Redis[16].
В 2018 году некоторые модули Redis перешли на модифицированную лицензию Apache 2.0 с добавлением Commons Clause[17]. В марте 2024 года основная часть Redis сменила прежнюю лицензию BSD-3 на двойное лицензирование под Redis Source Available License v2 (RSALv2) и SSPLv1[5]. В мае 2025 года, после возвращения в проект Санфилиппо, компания объявила о добавлении лицензии AGPLv3 в качестве третьей опции, начиная с версии 8.0, что было представлено как возвращение к модели с открытым исходным кодом[15][18]. Исходный код проекта доступен на GitHub[19]; последняя стабильная версия — 8.2.3[20].
Общие сведения
| Redis | |||
|---|---|---|---|
| Тип | хранилище структур данных, база данных «ключ—значение» | ||
| Автор | Сальваторе Санфилиппо[1][2] | ||
| Разработчик | Redis[1][2] | ||
| Написана на | C | ||
| Интерфейс | Интерфейс командной строки | ||
| Операционная система | Unix-подобные[3] | ||
| Языки интерфейса | английский | ||
| Первый выпуск | 26 февраля 2009[4] | ||
| Аппаратные платформы | x86-64, ARM, Power Systems | ||
| Последняя версия | 8.2.3 | ||
| Тестовая версия | 8.3.x | ||
| Репозиторий | github.com/redis/redis | ||
| |||
| |||
| Состояние | активное | ||
| Лицензия | Redis Source Available License, SSPL[5], или AGPL[6] | ||
| Сайт | redis.io | ||
История
Название «Redis» расшифровывается как Remote Dictionary Server[21]. Проект начался в 2009 году, когда Сальваторе Санфилиппо (псевдоним Antirez) пытался повысить масштабируемость собственного стартапа, разрабатывая анализатор веб-журналов в реальном времени. Столкнувшись с ограничениями традиционных СУБД, он создал прототип Redis на языке Tcl[22]. Позднее он переписал прототип на C и реализовал первый тип данных — список. После успешного использования внутри компании Санфилиппо опубликовал исходный код на Hacker News. Первые пользователи были из сообщества Ruby, среди которых были GitHub и Instagram[23][24].
В марте 2010 года Санфилиппо был приглашён в компанию VMware[25][26].[27]
В мае 2013 года Redis стала спонсироваться Pivotal Software (дочерней компанией VMware)[28].
В июне 2015 года разработка перешла под спонсорство Redis Ltd[29]..
В августе 2018 года, чтобы ограничить использование ПО облачными провайдерами без компенсации, компания Redis Ltd. перевела дополнительные модули с лицензии AGPL на Apache License с дополнением Commons Clause, ограничивающим коммерческое применение. Эти модули стали исходно-открытыми, но перестали быть свободными. Основной код оставался под BSD-лицензией[30].[31]
В октябре 2018 года была выпущена версия Redis 5.0 с поддержкой структуры данных Stream[32].
В феврале 2019 года вместо Commons Clause была внедрена собственная лицензия Redis Source Available License (RSAL), прямо запрещавшая коммерческое использование модулей как части других СУБД, поисковых и ML/AI-движков[33][34]. Последние редакции под свободной лицензией были форкнуты в проект GoodFORM[35].
В июне 2020 года Санфилиппо покинул пост мейнтейнера, его сменили Йосси Готлиб и Оран Агре[36].
В марте 2024 года Redis Ltd. объявила о переводе базового продукта с лицензии BSD на двойное лицензирование под RSALv2 и SSPLv1, начиная с версии 7.4[37]. Этот шаг вызвал критику в сообществе, и Linux Foundation объявил о создании форка Valkey на базе последней BSD-версии[38][39].
В ноябре 2024 года в компанию вернулся её создатель Сальваторе Санфилиппо. Вскоре после этого, в мае 2025 года, Redis Ltd. объявила о добавлении лицензии AGPLv3 в качестве третьей опции, начиная с версии 8.0. Этот шаг был представлен как возвращение к модели с открытым исходным кодом, одобренной OSI.
В октябре 2025 года было объявлено об устранении критической уязвимости RediShell (CVE-2025-49844), позволявшей удалённо выполнять код и существовавшей в кодовой базе около 13 лет[40][41]. В том же месяце Redis приобрела компанию Featureform, специализирующуюся на программном обеспечении для бизнеса[42].
Разработка и версионирование
По состоянию на 2025 год Redis находится в состоянии активной разработки и поддержки, регулярно выпускаются обновления и исправления безопасности[43]. Примером является оперативное устранение критической уязвимости RediShell (CVE-2025-49844) в октябре 2025 года. Проект придерживается чёткой политики поддержки: последняя стабильная версия получает полную поддержку, в то время как предыдущая минорная и предыдущая стабильная мажорная версии поддерживаются только выпуском исправлений для критических ошибок и уязвимостей[43].
В Redis принята схема версионирования, при которой стабильные выпуски имеют чётный младший номер версии (например, 8.0, 8.2), а нестабильные (тестовые) — нечётный[44]. Разработка новых функций ведётся в специальной ветке репозитория под названием «unstable», которая постоянно обновляется[45]. Например, разработка для будущего стабильного релиза 8.4 ведётся в ветке с версиями 8.3.x[44].
В проекте отсутствуют формальные «альфа» или «бета»-версии[46]. Когда функциональность для новой версии готова, для стабилизации кода выпускается один или несколько релиз-кандидатов (Release Candidate, RC). После исправления в них критических ошибок выпускается стабильная версия[46]. Так, стабильной версии Redis 8.2, вышедшей в августе 2025 года, предшествовал выпуск релиз-кандидата 8.2-RC1 в июле того же года[47]. По состоянию на ноябрь 2025 года активных кандидатов на релиз для будущих версий не было анонсировано[44].
Отличия от других СУБД
Redis популяризировал концепцию системы, являющейся одновременно хранилищем и кэшем. Система проектировалась так, чтобы данные всегда читались и изменялись в оперативной памяти, а на диск сохранялись в формате, не предназначенном для произвольного доступа. Данные восстанавливаются в память только при перезапуске.
В отличие от традиционных СУБД, Redis представляет собой сервер структур данных и не использует программный движок хранения, подобный InnoDB или MyISAM[48][49]. Команды пользователя не формируют запрос, а описывают операции над заранее определёнными абстрактными типами данных, такими как строки, списки и хеш-таблицы[49]. Данные должны быть организованы для быстрого прямого доступа, так как извлечение не поддерживается за счёт индексов, агрегаций и других функций реляционных СУБД. В реализации Redis активно используется системный вызов fork для копирования процесса, чтобы основной процесс продолжал обслуживать клиентов, а дочерний сохранял данные на диск.
При этом в коммерческой версии Redis Enterprise для реализации функции автоматического многоуровневого хранения (Auto Tiering), позволяющей работать с объёмами данных, превышающими оперативную память, используются сторонние движки. Начиная с версии 7.2.4, по умолчанию применяется Speedb, тогда как в более ранних версиях использовался RocksDB[50]. Эти движки являются частью специфической функции корпоративной версии и не относятся к архитектуре open-source версии Redis[50].
Популярность
Согласно ежемесячным рейтингам DB-Engines, Redis является самой популярной базой данных в категории «ключ-значение»[51]. В общем рейтинге СУБД по состоянию на январь 2025 года Redis занимала 7-е место[52]. Redis также занимает 4-е место среди NoSQL-баз по удовлетворённости и рыночной доле по опросам пользователей[53], является самой популярной NoSQL-базой в контейнерах[54], и заняла 4-е место среди хранилищ по версии stackshare.io в 2019 году[55].
По результатам опроса Stack Overflow, с 2017 по 2021 годы Redis лидировала в категории «самая любимая база данных» среди разработчиков[56]. Однако к 2024 году Redis переместился на шестое место[57], но в опросе 2025 года поднялся на пятое место, показав рост использования на 8 процентных пунктов — его использовали около 28 % профессиональных разработчиков[58][59].
Возможности
Redis сопоставляет ключи со сложными типами значений. Основные структуры данных включают:
- Строки (Strings) — базовый тип, способный хранить любые данные (текст, сериализованные объекты) размером до 512 МБ.
- Списки (Lists) — упорядоченные коллекции строк, отсортированные в порядке их вставки.
- Множества (Sets) — неупорядоченные коллекции уникальных строк.
- Упорядоченные множества (Sorted Sets) — множества, где каждый элемент имеет числовой вес (score), по которому коллекция отсортирована.
- Хеши (Hashes) — структуры для хранения наборов пар «поле-значение»[60].
- Документы JSON — нативная поддержка JSON-документов[60].
- Потоки (Streams) — структура данных в виде журнала, куда можно только добавлять записи.
- Геопространственные индексы (Geospatial) — для хранения координат и выполнения запросов по радиусу[60].
- Битовые карты (Bitmaps) и Битовые поля (Bitfields) — для выполнения побитовых операций над строками[61].
- HyperLogLog — вероятностная структура для подсчёта уникальных элементов с минимальным использованием памяти[61].
- Векторные множества (Vector sets) — для хранения и поиска векторных представлений в задачах машинного обучения[62].
Модуль Redis Query Engine позволяет использовать Redis как документоориентированную базу, векторную базу данных, для вторичных индексов и как поисковой движок. Пользователь может создавать индексы для хешей и JSON-документов, использовать развитый язык запросов для векторного поиска, полнотекстовых, геопространственных запросов и агрегаций[63]. Начиная с версии 8.2, для векторного поиска был добавлен новый тип индекса SVS-VAMANA, который поддерживает сжатие векторов для снижения потребления памяти и ускорения поиска.
Версия 8.2, выпущенная в августе 2025 года, также расширила возможности работы с существующими структурами данных[64]:
- Для Streams были добавлены команды XDELEX (удаление записей с расширенными опциями) и XACKDEL (атомарное подтверждение и удаление записи).
- Для Bitmaps команда BITOP получила новые логические операторы: DIFF, DIFF1, ANDOR и ONE, что позволяет выполнять более сложные битовые манипуляции.
Технология Pub/Sub реализует обмен сообщениями: издатели отправляют сообщения в канал, подписчики получают их из этого же канала[65].
Транзакции Redis позволяют выполнить группу команд как одну атомарную операцию: во время транзакции остальные запросы не обрабатываются, что гарантирует изолированное исполнение[66].
Возможна загрузка и запуск Lua-скриптов непосредственно на сервере[67].
Начиная с версии 8.0 (с 1 мая 2025 года), все типы данных входят в единый пакет[68] и доступны по лицензии Redis Source Available v2[69]. Ранее некоторые типы распространялись отдельно и лицензировались иначе.
Интерфейсы
Основным инструментом для взаимодействия с Redis является redis-cli — официальный интерфейс командной строки[70]. Он поставляется вместе с сервером Redis и позволяет отправлять команды и получать ответы напрямую из терминала. Утилита поддерживает два режима работы: интерактивный (REPL), в котором пользователь вводит команды в реальном времени, и режим выполнения команд, когда они передаются как аргументы, что удобно для автоматизации и написания скриптов[70][71]. redis-cli используется для управления данными, мониторинга производительности и отладки[71]. Он доступен на платформах Linux, macOS и Windows (через подсистему Windows для Linux)[72].
Помимо командной строки, существует множество графических интерфейсов (GUI), которые предоставляют визуальный способ взаимодействия с базами данных Redis[73]. Такие инструменты полезны для просмотра и изменения данных, мониторинга и управления конфигурациями без необходимости запоминать команды[73]. К наиболее популярным относятся:
- Redis Insight — официальный графический инструмент от Redis, поддерживающий в том числе модули Redis[74].
- Another Redis Desktop Manager — кроссплатформенное приложение для Windows, macOS и Linux[75].
- Medis — современный GUI, разработанный для macOS[76].
- Другие инструменты, такие как Redis Commander, P3X Redis UI и QuickRedis[75].
Поддерживаемые платформы
Redis является кроссплатформенной системой и поддерживает работу на разнообразных аппаратных архитектурах, от мощных серверов до встраиваемых устройств.
Аппаратные архитектуры
- x86-64 — наиболее распространённая архитектура для запуска Redis в производственной среде на серверах с процессорами Intel и AMD[77].
- ARM — официально поддерживается, начиная с версии 4.0[78]. Поддержка включает как мощные серверные процессоры (например, AWS Graviton, Google Axion, Microsoft Cobalt), так и маломощные устройства, такие как Raspberry Pi, что делает Redis подходящим для IoT-решений[78][79].
- Power Systems — Redis может работать на серверах с архитектурой IBM POWER, в частности на POWER8. Производительность на этой платформе была оптимизирована в рамках партнёрства с IBM[77].
Операционные системы Redis официально поддерживается и тестируется на Unix-подобных операционных системах:
- Linux — является основной и наиболее рекомендуемой платформой для развёртывания в производственной среде. Поддерживаются различные дистрибутивы, такие как Ubuntu, Debian, CentOS и Red Hat Enterprise Linux[80].
- macOS — поддерживается для целей разработки[80].
Официальная поддержка для Windows отсутствует[81]. Однако запуск возможен несколькими способами:
Устойчивость
Redis хранит все данные в памяти. До версии 2.4 поддерживалась так называемая виртуальная память[84], позволявшая размещать часть данных на диске, но данный механизм устарел. Устойчивость обеспечивается двумя способами: создание снимков (snapshotting) — асинхронная периодическая запись дампа в двоичном формате RDB; или через журналирование (append-only file, AOF) — запись всех изменяющих данных операций в отдельный файл в фоновом режиме. Для ограничения размера журнального файла Redis может переписывать его в фоне. Журналирование реализовано с версии 1.1 и считается наиболее надёжным вариантом[85].
Механизмы персистентности получили развитие в последующих версиях. Начиная с версии 4.0 (2017 год), был представлен гибридный формат RDB-AOF: при перезаписи файла AOF в его начале создаётся снимок в формате RDB, а новые команды дописываются в конец. Такой подход значительно ускоряет восстановление данных по сравнению с использованием чистого AOF, сохраняя при этом высокую надёжность[86]. В версии 7.0 (2022 год) механизм AOF был усовершенствован: вместо одного файла журнал операций стал сохраняться в виде нескольких файлов в отдельном каталоге[87]. Для более точного контроля над долговечностью данных в версии 7.2 (2023 год) была добавлена команда `WAITAOF`, позволяющая клиенту дождаться синхронизации операций записи с диском на заданном числе реплик[88].
По умолчанию данные записываются на диск не реже одного раза в 2 секунды. В случае сбоя при настройках по умолчанию возможно потерять лишь несколько секунд данных.
Репликация
Redis поддерживает репликацию master-реплика. Данные любого сервера могут реплицироваться на неограниченное число реплик; каждая реплика может стать мастером для других. Поддерживается древовидная репликация. Реплики могут принимать записи, что допускает контролируемую (или случайную) неконсистентность. Реализована полная поддержка Pub/Sub: клиент реплики может подписаться на канал и получать все сообщения, опубликованные на любом уровне дерева[89]. Репликация предназначена для масштабирования на чтение и резервирования данных.
Механизм репликации со временем совершенствовался. В версии 4.0 (2017 год) был представлен улучшенный протокол частичной синхронизации PSYNC2. Он позволил репликам после перезапуска продолжать синхронизацию с основным узлом без полной пересылки всех данных при определённых условиях, так как необходимые метаданные о репликации стали сохраняться в RDB-файле[90][91]. В версии 7.2 (2023 год) была добавлена поддержка SNI для репликации на основе TLS, что повысило безопасность в защищённых средах[92].
Наиболее значительное изменение было внесено в Redis 8.0 (2024 год) с появлением механизма «RDB channel replication». Он повысил производительность и надёжность полной синхронизации за счёт одновременного запуска двух потоков: один передаёт снимок базы данных (RDB), а второй — непрерывный поток команд, поступающих на основной узел во время синхронизации[93][94]. Такой подход позволил ускорить полную синхронизацию набора данных объёмом 10 ГБ на 18 % и сократить пиковую нагрузку на память буфера репликации на 35 %[93]. Кроме того, была улучшена отказоустойчивость: при кратковременных сбоях чтения данных во время синхронизации система выполняет повторные попытки, что позволяет избежать ненужных отключений реплик[94].
Производительность
Если устойчивость не требуется, благодаря размещению данных в памяти Redis превосходит по скорости традиционные СУБД, которые фиксируют каждую операцию через запись на диск. Redis работает как однопроцессное приложение и однопоточно (или двупоточно при переписывании журнала AOF). Поэтому один экземпляр Redis не может распараллелить задачи вроде хранимых процедур[95].
Версия 8.2, выпущенная в августе 2025 года, принесла значительные улучшения производительности. Благодаря оптимизации более 70 команд задержка при их выполнении была снижена до 35 %[96], а пропускная способность увеличена до 49 %, что позволяет одному экземпляру обрабатывать свыше 1 миллиона операций в секунду[97]. Кроме того, изменение внутреннего метода хранения ключей и JSON-значений позволило сократить использование памяти до 67 % для определённых типов нагрузок[96].
Кластеризация
Кластеризация Redis появилась в апреле 2015 года (версия 3.0)[98]. В режиме кластера поддерживаются все одноключевые команды; операции с несколькими ключами (объединение, пересечение) разрешены только для ключей на одном узле, а смена базы данных недоступна[99]. Кластер масштабируется до 1000 узлов, обеспечивает приемлемую защищённость записей и продолжает работать при сбое части узлов[100][101].
В последующих версиях функциональность кластера была расширена. В версии 7.0 (2022 год) была добавлена поддержка шардированного механизма Pub/Sub[102]. Это позволило снизить сетевой трафик в крупных кластерах, поскольку сообщения распространяются в пределах шарда, а не транслируются на все узлы. Для улучшения мониторинга в версии 8.2 (2025 год) была введена команда `CLUSTER SLOT-STATS`, предоставляющая детальную статистику по каждому слоту, включая количество ключей.
Сценарии использования
Redis применяется для кэширования сессий, полной блоковой кэширования веб-страниц, систем обмена сообщениями, расчёта лидербордов, счётчиков и других задач[103]. Механизм Pub/Sub обеспечивает обмен сообщениями в реальном времени между серверами.
Ведущие облачные провайдеры предоставляют Redis как управляемый сервис, однако в 2023—2025 годах в их предложениях произошли значительные изменения:
- Microsoft Azure: В ноябре 2024 года Microsoft в партнёрстве с Redis представила сервис нового поколения Azure Managed Redis (стал общедоступным в мае 2025 года)[104][105]. Он предоставляет доступ к последним версиям Redis и корпоративным функциям, таким как векторный поиск. Одновременно был объявлен план по прекращению поддержки старого сервиса Azure Cache for Redis в период с 2026 по 2028 год, с рекомендацией миграции на новый продукт[106]. Поддержка Redis версии 4 в старом сервисе была прекращена 30 июня 2023 года[107].
- Amazon Web Services: После изменения лицензионной политики Redis, AWS сделала ставку на его форк Valkey. В октябре 2024 года был запущен сервис Amazon ElastiCache for Valkey[108]. Он позиционируется как полная замена ElastiCache for Redis с более низкой стоимостью и возможностью бесшовной миграции[109]. В июле 2025 года сервис был обновлён до версии 8.1, получив поддержку векторного поиска и расширенную работу с JSON[110].
- Google Cloud: Основным предложением является сервис Memorystore for Redis Cluster, ставший общедоступным в ноябре 2023 года[111]. Сервис предлагает горизонтально масштабируемую архитектуру и высокую доступность[112]. В апреле 2024 года была добавлена поддержка персистентности данных (RDB и AOF) и векторного поиска для приложений на базе ИИ[111].
- Alibaba Cloud: 27 сентября 2024 года компания провела ребрендинг, объединив сервисы ApsaraDB for Redis и Tair в единый продукт под названием Tair (Redis OSS-compatible)[113]. Существующие экземпляры продолжают работать и поддерживаться в рамках нового бренда[113].
Пользователи
Redis используется такими компаниями, как Twitter, Airbnb, Tinder[114], Yahoo!, Adobe, Hulu[115], Amazon[116] и OpenAI[117].
В октябре 2024 года была запущена программа «Redis for Startups» для поддержки молодых технологических компаний[118]. В рамках этой инициативы об использовании Redis заявили несколько инновационных стартапов, особенно в сфере искусственного интеллекта. Например, компания Relevance AI применяет Redis для создания и автоматизации работы ИИ-агентов, сократив время отклика с двух секунд до десяти миллисекунд благодаря векторному поиску[119]. Стартап Superlinked использует Redis Cloud для обработки векторных представлений в системах рекомендаций и персонализированного поиска в реальном времени[120][121]. Также сообщалось о сотрудничестве с различными правительственными ведомствами Индии[122].