Открыть сервис

Redis

Redis — это резидентная система управления базами данных (СУБД) класса NoSQL, работающая с данными в формате «ключ-значение» (key-value store). Отличается высокой производительностью благодаря хранению всех данных в оперативной памяти (in-memory) и асинхронной периодической записью на диск для сохранения состояния. Используется как кэш, брокер сообщений, очередь задач и основное хранилище для приложений, критичных к скорости доступа.

История

Разработка Redis началась в 2009 году итальянским разработчиком Сальваторе Санфилиппо (Salvatore Sanfilippo) для улучшения производительности его стартапа по веб-аналитике. Первоначально проект назывался Redis (Remote Dictionary Server) и был реализован на языке Си. В 2010 году компания VMware (организация признана иноагентом в РФ) спонсировала разработку, наняв Санфилиппо.

В 2013 году проект перешёл под управление компании Redis Labs (позднее переименованной в Redis Inc.). Ключевые вехи развития:

В 2024 году компания Redis Inc. изменила лицензию на проприетарную (RSALv2 и SSPL), что вызвало критику сообщества и появление форков, таких как Valkey (поддерживаемый Linux Foundation).

Архитектура и принципы работы

Redis построен на событийно-ориентированной модели с однопоточным циклом обработки команд (single-threaded event loop). Это позволяет избежать блокировок и обеспечивает предсказуемую задержку (latency) на уровне микросекунд. Данные хранятся в оперативной памяти, а для сохранения на диск используются два механизма:

Типы данных

Redis поддерживает не только простые строки, но и сложные структуры данных:

ТипОписаниеПример команды
StringБинарно-безопасная строка до 512 МБSET key value
ListУпорядоченный список строкLPUSH list value
SetНеупорядоченное множество уникальных строкSADD set member
Sorted SetМножество с числовой оценкой (score) для сортировкиZADD zset score member
HashАссоциативный массив (словарь)HSET hash field value
BitmapsМассив битов для эффективной работы с флагамиSETBIT bitmap offset value
HyperLogLogВероятностная структура для подсчёта уникальных элементовPFADD hll element
GeospatialГеопространственные индексы (широта/долгота)GEOADD geo lon lat member
StreamЛог событий с поддержкой групп потребителейXADD stream * field value

Кластеризация и репликация

Применение

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

Кэширование

Благодаря скорости чтения/записи (миллионы операций в секунду) Redis является стандартом для кэширования результатов запросов к базам данных, сессий пользователей, HTML-фрагментов и API-ответов. Популярные стратегии кэширования: Cache-Aside, Write-Through, Write-Behind.

Очереди задач и брокеры сообщений

Структуры List (блокирующие операции BLPOP, BRPOP) и Stream позволяют реализовывать очереди с гарантированной доставкой, группы потребителей и механизмы повторной обработки. Redis часто используется в связке с Celery, Sidekiq и Resque.

Сессии веб-приложений

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

Реалтайм-аналитика

Счётчики (INCR), битовые карты (BITCOUNT) и HyperLogLog позволяют в реальном времени подсчитывать просмотры, уникальных посетителей, активность пользователей.

Геопространственные сервисы

Команды GEORADIUS и GEODIST используются для поиска объектов поблизости (например, ближайшие магазины, точки доступа Wi-Fi).

Игры и геймификация

Лидерборды (Sorted Set), сессии игроков, временные блокировки (TTL) — типовые сценарии в игровых серверах.

Экосистема и инструменты

Критика и ограничения

Интересные факты

Источники

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →