in-memory-databases · 15 мин чтения

Redis vs Valkey vs Dragonfly в 2026: какое in-memory хранилище выбрать

Redis Valkey Dragonfly in-memory база данных Redis альтернативы кеширование
Содержание

Рынок in-memory хранилищ данных переживает один из самых бурных периодов за всю свою историю. В марте 2024 года Redis Labs изменила лицензию Redis с BSD на двойную source-available (RSALv2 / SSPLv1), что спровоцировало появление Valkey — форка под эгидой Linux Foundation. Параллельно набирает обороты Dragonfly — архитектурно новый движок, совместимый с Redis-протоколом, но использующий многопоточность на уровне ядра. В мае 2025 года Redis частично откатил решение, добавив третью лицензию — AGPLv3, но к тому моменту экосистема уже раскололась.

В этой статье мы детально сравним три in-memory хранилища — Redis 8.0, Valkey 9.0 и Dragonfly 1.36 — по архитектуре, производительности, лицензированию, экосистеме и сценариям использования. Статья адресована бэкенд-разработчикам, DevOps-инженерам и архитекторам, которые выбирают in-memory решение для нового проекта или рассматривают миграцию с классического Redis.

Обзор Redis 8.0

Redis (Remote Dictionary Server) — ветеран мира in-memory хранилищ, запущенный Сальваторе Санфилиппо (antirez) в 2009 году. С 2020 года проект принадлежит компании Redis Ltd (бывшая Redis Labs). Текущая стабильная версия — Redis 8.0, выпущенная в декабре 2025 года.

Ключевые нововведения Redis 8.0

Redis 8 стал самым масштабным обновлением за всю историю проекта. Главное изменение — интеграция ранее отдельных модулей (RedisJSON, RediSearch, RedisTimeSeries, RedisBloom) непосредственно в ядро:

  • 8 новых структур данных — vector set (бета), JSON, time series, Bloom filter, cuckoo filter, count-min sketch, top-k, t-digest. Раньше для этого требовались отдельные модули Redis Stack.
  • Производительность — более 30 оптимизаций: ускорение команд до 87%, удвоение пропускной способности (ops/sec), ускорение репликации до 18%, увеличение производительности Query Engine до 16x.
  • Vector Set (бета) — нативная поддержка векторных множеств для AI/ML-задач: семантический поиск, рекомендации, RAG-пайплайны.
  • Тройное лицензирование — RSALv2, SSPLv1 или AGPLv3 на выбор пользователя.

На GitHub репозиторий redis/redis насчитывает более 73 000 звёзд и более 700 контрибьюторов. Redis остаётся наиболее зрелым и функционально богатым решением в своей нише.

# Установка Redis 8.0 из официального репозитория
curl -fsSL https://packages.redis.io/gpg | sudo gpg --dearmor -o /usr/share/keyrings/redis-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/redis-archive-keyring.gpg] https://packages.redis.io/deb $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/redis.list
sudo apt-get update
sudo apt-get install redis

# Проверка версии
redis-server --version
# Redis server v=8.0.0 ...

Обзор Valkey 9.0

Valkey — форк Redis 7.2.4, созданный в марте 2024 года корпоративными контрибьюторами (Amazon, Google, Oracle, Ericsson, Snap) в ответ на изменение лицензии Redis. Проект управляется Linux Foundation и распространяется под лицензией BSD 3-Clause — без каких-либо ограничений на коммерческое использование.

Ключевые нововведения Valkey 9.0

Valkey 9.0, выпущенный в октябре 2025 года, — крупнейший релиз проекта, значительно расширяющий возможности по сравнению с исходным кодом Redis:

  • Масштабируемость — кластер до 2 000 нод, протестированный на достижение более 1 миллиарда запросов в секунду. Это стало возможным благодаря оптимизации gossip-протокола и нового механизма атомарной миграции слотов.
  • Производительность — прирост до 40% по сравнению с Valkey 8.1. Применены SIMD-оптимизации (AVX-512) для BITCOUNT и HyperLogLog (до 200% ускорения), zero-copy ответы для крупных запросов, memory prefetching для пайплайнинга команд, поддержка Multipath TCP (MPTCP).
  • Атомарная миграция слотов — миграция целого слота одной операцией вместо покомандной миграции ключей, что критично для кластерных операций.
  • Hash field expiration — TTL на уровне отдельных полей хеша, а не только на уровне ключа.
  • Нумерованные базы данных в кластерном режиме — возможность использовать SELECT в кластере.
  • Safe shutdown mode — предсказуемое завершение работы с минимизацией потери данных.
  • Нативная TLS-аутентификация — аутентификация клиентов на основе сертификатов.

На GitHub репозиторий valkey-io/valkey набрал ~19 000 звёзд менее чем за два года. В 2025 году в проекте участвовали 346 активных контрибьюторов из почти 50 компаний.

# Установка Valkey 9.0 из исходников
git clone https://github.com/valkey-io/valkey.git
cd valkey
git checkout 9.0.0
make
sudo make install

# Запуск с включённым I/O multithreading
valkey-server --io-threads 4 --io-threads-do-reads yes

Обзор Dragonfly 1.36

Dragonfly — in-memory хранилище нового поколения, созданное с нуля в 2022 году командой под руководством Романа Гершмана (бывший инженер Google и Amazon). В отличие от Redis и Valkey, Dragonfly не является форком — это полная переимплементация на C++ с многопоточной архитектурой thread-per-core. Проект распространяется под лицензией BSL 1.1 (Business Source License), которая разрешает свободное использование, но запрещает продажу Dragonfly как сервиса.

Ключевые особенности Dragonfly

  • Многопоточная архитектура — dataset разделён на независимые шарды, каждый из которых привязан к выделенному потоку. Это устраняет узкое место однопоточной модели Redis/Valkey и обеспечивает почти линейное масштабирование с ростом числа ядер CPU.
  • Производительность — на инстансе c7gn.16xlarge (64 vCPU) Dragonfly достигает 6,43 миллиона операций в секунду — в 25 раз больше, чем однопроцессный Redis на том же оборудовании.
  • Экономия памяти — на 30–38% меньше памяти по сравнению с Redis/Valkey при хранении аналогичного объёма данных. При снапшотах потребление памяти остаётся стабильным, тогда как Redis может увеличивать потребление до 3x.
  • Совместимость — поддержка 240+ наиболее используемых команд Redis, включая нативную реализацию RedisJSON и поискового движка (аналог RediSearch).
  • Встроенная поддержка OpenTelemetry для observability.
  • Вероятностные структуры данных — Bloom filter, cuckoo filter и другие — доступны из коробки.

На GitHub dragonflydb/dragonfly насчитывает ~27 000 звёзд и 133 контрибьютора. Последний релиз — v1.36.11 от 22 февраля 2026 года.

# Запуск Dragonfly через Docker
docker run -d --name dragonfly -p 6379:6379 \
  --ulimit memlock=-1 \
  docker.dragonflydb.io/dragonflydb/dragonfly

# Подключение стандартным redis-cli
redis-cli -h localhost -p 6379
> SET hello "world"
OK
> GET hello
"world"

Архитектура: однопоточность vs многопоточность

Архитектурные различия — ключевой фактор, определяющий поведение каждого из трёх хранилищ под нагрузкой.

Redis и Valkey: однопоточное ядро с I/O-потоками

И Redis, и Valkey используют однопоточную event-loop модель для обработки команд и манипуляции данными. Это гарантирует атомарность операций без блокировок, но создаёт узкое место: одно ядро CPU обрабатывает все команды последовательно.

Начиная с Valkey 8.0, реализована улучшенная I/O-многопоточность: отдельные потоки занимаются чтением запросов и отправкой ответов, разгружая основной поток. Это позволило Valkey 8.0 достичь 1,19 млн RPS на 16-ядерном инстансе (AWS c7g.4xlarge) — рост на 230% по сравнению с Valkey 7.2. Redis 8.0 применяет аналогичный подход, но с менее агрессивными оптимизациями.

Тем не менее, для CPU-интенсивных операций (ZADD, ZRANGEBYSCORE, полнотекстовый поиск) основной поток остаётся узким местом.

Dragonfly: shared-nothing архитектура

Dragonfly реализует архитектуру shared-nothing с thread-per-core: весь dataset разделён на шарды, каждый шард привязан к конкретному ядру CPU. Потоки не конкурируют за общие данные, что устраняет необходимость в мьютексах. Для операций, затрагивающих несколько шардов, используется кооперативная многозадачность.

На практике это означает:

  • Линейное масштабирование — добавление ядер CPU пропорционально увеличивает пропускную способность.
  • Стабильная латентность — отсутствие lock contention приводит к более предсказуемым временам отклика.
  • Эффективные снапшоты — Dragonfly использует фибры (coroutines) для создания снапшотов без fork(), что устраняет скачок потребления памяти, характерный для Redis.
# Сравнение потребления памяти при снапшоте (приблизительные значения)
# Redis/Valkey:   10 GB dataset → до 20 GB при BGSAVE (Copy-on-Write)
# Dragonfly:      10 GB dataset → ~10.5 GB при снапшоте (без fork)

Производительность: бенчмарки 2025–2026

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

Пропускная способность (однонодовый режим)

На инстансе AWS c8g.2xlarge (Graviton4, 8 vCPU):

  • Valkey 8.1 — ~950K RPS (GET), средняя латентность 0,21 мс
  • Redis 8.0 — ~821K RPS (GET), средняя латентность 0,44 мс
  • Valkey SET — 37% выше пропускная способность, чем у Redis 8.0

На инстансе AWS c6gn.16xlarge (64 vCPU):

  • Dragonfly — 3,8 млн QPS (в 25 раз больше однопроцессного Redis)
  • На c7gn.16xlarge Dragonfly достигает 6,43 млн QPS

CPU-интенсивные операции

На 48-ядерном сервере при операциях ZADD:

  • Dragonfly — в 29 раз выше пропускная способность, чем у Valkey
  • Valkey ограничен одним ядром для обработки команд, Dragonfly масштабируется линейно

Потребление памяти

В тесте с хранением ~200 млн элементов:

  • Dragonfly — 17 ГБ, 198 млн элементов
  • Valkey — 24,5 ГБ, 177 млн элементов
  • Dragonfly экономит 38% памяти на элемент

Кластерное масштабирование

  • Valkey 9.0 — кластер из 2 000 нод на r7g.2xlarge (8 vCPU, 64 ГБ RAM), более 1 миллиарда RPS
  • Redis — кластерный режим поддерживает до нескольких сотен нод, ограничения gossip-протокола на больших масштабах
  • Dragonfly — фокус на вертикальном масштабировании одной ноды, кластерный режим в развитии

Лицензирование и экосистема

Лицензия — один из определяющих факторов при выборе in-memory хранилища в 2026 году. Именно изменение лицензии Redis привело к появлению Valkey и ускорило рост Dragonfly.

Сравнительная таблица

ХарактеристикаRedis 8.0Valkey 9.0Dragonfly 1.36
ЛицензияRSALv2 / SSPLv1 / AGPLv3BSD 3-ClauseBSL 1.1
Open Source (OSI)Частично (AGPLv3)ДаНет (source-available)
АрхитектураОднопоточная + I/O threadsОднопоточная + I/O threadsМногопоточная (thread-per-core)
Макс. QPS (одна нода)~821K (8 vCPU)~950K (8 vCPU)~6,4M (64 vCPU)
Экономия памятиБазовый уровеньАналогично Redis30–38% меньше Redis
КластеризацияRedis ClusterValkey Cluster (до 2000 нод)Экспериментальная
JSON (нативный)Да (интегрирован)В планах (roadmap 2026)Да (нативный)
Векторный поискДа (vector set, бета)В планах (roadmap 2026)Нет
Bloom filterДаВ планахДа
Поисковый движокRedis Query EngineНетДа (встроенный)
УправлениеRedis LtdLinux FoundationDragonfly Ltd
GitHub звёзды~73K~19K~27K
Совместимость100% (эталон)99%+ (форк Redis)240+ команд
Облачные сервисыRedis Cloud, AWS, Azure, GCPAWS ElastiCache, AivenDragonfly Cloud, Aiven

Redis: тройная лицензия

С Redis 8.0 доступны три варианта лицензии: RSALv2, SSPLv1 и AGPLv3. Появление AGPLv3 — уступка сообществу после волны критики в 2024 году. AGPLv3 является OSI-одобренной открытой лицензией, однако её copyleft-природа обязывает раскрывать исходный код производных работ, включая сетевые сервисы. Для многих компаний это неприемлемо.

Valkey: чистый open source

Valkey использует BSD 3-Clause — максимально свободную лицензию без ограничений на коммерческое использование. Именно поэтому AWS ElastiCache, Google Cloud Memorystore и другие облачные провайдеры мигрировали на Valkey.

Dragonfly: BSL 1.1

Business Source License разрешает свободное использование и модификацию кода, но запрещает предоставление Dragonfly как сервиса (in-memory datastore as a service). Через 4 года после каждого релиза код переходит под Apache 2.0. Для подавляющего большинства компаний, использующих Dragonfly как внутренний компонент, BSL не создаёт ограничений.

Подключение из приложения: примеры кода

Все три хранилища совместимы с RESP-протоколом, что позволяет использовать одни и те же клиентские библиотеки. Покажем примеры подключения на Python и Node.js.

Python

# === Redis / Dragonfly — используем стандартный redis-py ===
import redis

# Подключение к Redis 8.0 или Dragonfly (один и тот же клиент)
r = redis.Redis(host='localhost', port=6379, db=0, decode_responses=True)

# Базовые операции
r.set('user:1001', '{"name": "Alice", "role": "admin"}')
user = r.get('user:1001')
print(user)  # {"name": "Alice", "role": "admin"}

# Работа с JSON (Redis 8.0 / Dragonfly)
r.execute_command('JSON.SET', 'doc:1', '$', '{"title": "Hello", "views": 0}')
r.execute_command('JSON.NUMINCRBY', 'doc:1', '$.views', 1)
result = r.execute_command('JSON.GET', 'doc:1')
print(result)  # {"title":"Hello","views":1}

# Pipeline для пакетной обработки
pipe = r.pipeline()
for i in range(1000):
    pipe.set(f'key:{i}', f'value:{i}')
pipe.execute()  # Все 1000 команд отправляются одним пакетом


# === Valkey — используем valkey-py (форк redis-py) ===
import valkey

v = valkey.Valkey(host='localhost', port=6379, db=0, decode_responses=True)

# API полностью идентичен redis-py
v.set('session:abc', '{"user_id": 1001, "expires": 3600}')
v.expire('session:abc', 3600)
session = v.get('session:abc')
print(session)

# Hash field expiration (Valkey 9.0)
v.hset('user:1001', mapping={'name': 'Alice', 'temp_token': 'xyz123'})
v.execute_command('HEXPIRE', 'user:1001', 300, 'FIELDS', 1, 'temp_token')
# Поле temp_token будет удалено через 300 секунд

Node.js

// === Redis / Dragonfly — используем ioredis ===
import Redis from 'ioredis';

const redis = new Redis({
  host: 'localhost',
  port: 6379,
  maxRetriesPerRequest: 3,
  retryStrategy(times) {
    return Math.min(times * 50, 2000);
  }
});

// Работа с Sorted Set
await redis.zadd('leaderboard', 100, 'player:1', 250, 'player:2', 175, 'player:3');
const top = await redis.zrevrange('leaderboard', 0, 9, 'WITHSCORES');
console.log(top);
// ['player:2', '250', 'player:3', '175', 'player:1', '100']

// Pub/Sub (работает одинаково на Redis, Valkey, Dragonfly)
const sub = new Redis();
sub.subscribe('notifications', (err, count) => {
  console.log(`Subscribed to ${count} channel(s)`);
});

sub.on('message', (channel, message) => {
  console.log(`${channel}: ${message}`);
});

// Публикация из другого соединения
redis.publish('notifications', JSON.stringify({ event: 'user_signup', id: 42 }));

Docker Compose: запуск всех трёх для тестирования

# docker-compose.yml
version: '3.8'

services:
  redis:
    image: redis:8.0
    ports:
      - "6379:6379"
    command: redis-server --maxmemory 256mb --maxmemory-policy allkeys-lru

  valkey:
    image: valkey/valkey:9.0
    ports:
      - "6380:6379"
    command: valkey-server --io-threads 4 --io-threads-do-reads yes

  dragonfly:
    image: docker.dragonflydb.io/dragonflydb/dragonfly
    ports:
      - "6381:6379"
    ulimits:
      memlock: -1
    command: dragonfly --maxmemory=256mb --proactor_threads=4

Когда выбрать Redis

Redis 8.0 остаётся оптимальным выбором в следующих сценариях:

  • AI/ML-приложения — нативные vector sets, встроенный Query Engine для семантического поиска и RAG-пайплайнов. Ни Valkey, ни Dragonfly пока не предлагают аналогичной функциональности.
  • Максимальная экосистема — Redis имеет наибольшее количество клиентских библиотек, интеграций, обучающих материалов и community-ресурсов. Если вы ищете ответ на Stack Overflow, скорее всего он про Redis.
  • Redis Modules — если вам нужны time series, probabilistic data structures, JSON и поиск в одном пакете, Redis 8.0 предоставляет всё это из коробки.
  • Существующая инфраструктура — если вы уже используете Redis Cloud или Redis Enterprise, обновление до 8.0 — наиболее простой путь.
  • AGPLv3 совместимость — если ваша компания нормально относится к copyleft-лицензиям, Redis 8.0 под AGPLv3 полностью open source.

Когда выбрать Valkey

Valkey 9.0 — лучший выбор, когда:

  • Лицензия критична — BSD 3-Clause не создаёт никаких ограничений. Для облачных провайдеров, SaaS-компаний и организаций с жёсткими юридическими требованиями это единственный полностью свободный вариант.
  • Горизонтальное масштабирование — кластер до 2 000 нод и 1 миллиард RPS. Если вашему проекту нужен кластер из десятков и сотен нод, Valkey Cluster 9.0 — наиболее зрелое решение.
  • Миграция с Redis — Valkey — прямой форк Redis, совместимость 99%+. Замена redis-server на valkey-server в подавляющем большинстве случаев прозрачна.
  • Облачные сервисы — AWS ElastiCache, Amazon MemoryDB, Aiven, Google Cloud Memorystore используют Valkey. Если вы работаете в облаке, вероятно, вы уже используете Valkey.
  • Community-driven развитие — проект управляется Linux Foundation с 346 активными контрибьюторами из 50 компаний, что гарантирует независимость от одного вендора.

Когда выбрать Dragonfly

Dragonfly 1.36 оптимален, когда:

  • Вертикальное масштабирование — если у вас мощный сервер с 16–64+ ядрами, Dragonfly утилизирует все ядра, тогда как Redis/Valkey используют преимущественно одно. Одна нода Dragonfly может заменить несколько нод Redis.
  • Экономия памяти — на 30–38% меньше памяти при хранении того же объёма данных. Снапшоты без fork() устраняют удвоение потребления памяти.
  • CPU-интенсивные операции — сортированные множества, агрегации, полнотекстовый поиск. На 48-ядерном сервере Dragonfly показывает 29-кратное преимущество перед Valkey на ZADD.
  • Замена Redis + Memcached — Dragonfly совместим с обоими протоколами, позволяя объединить два сервиса в один.
  • Снижение количества нод — вместо кластера из 10 нод Redis/Valkey можно использовать 1–2 ноды Dragonfly, упрощая операционное обслуживание.
  • BSL-совместимость — если вы не продаёте in-memory хранилище как сервис, BSL 1.1 не накладывает ограничений.

Миграция: практические рекомендации

С Redis на Valkey

Миграция максимально проста благодаря полной совместимости:

  1. Замените бинарный файл redis-server на valkey-server.
  2. Конфигурационный файл совместим — переименуйте redis.conf в valkey.conf (необязательно).
  3. В клиентском коде замените библиотеку redis-py на valkey-py (или продолжайте использовать redis-py — он работает с Valkey без изменений).
  4. Протестируйте совместимость специфичных для вашего проекта команд.

С Redis на Dragonfly

  1. Замените redis-server на dragonfly (тот же порт 6379, тот же RESP-протокол).
  2. Клиентские библиотеки (redis-py, ioredis, jedis) работают с Dragonfly без изменений.
  3. Проверьте поддержку используемых команд — Dragonfly поддерживает 240+ команд, но не все (например, некоторые кластерные команды ограничены).
  4. Настройте --proactor_threads под количество доступных ядер.
  5. При использовании Lua-скриптов — протестируйте совместимость, так как реализация Lua в Dragonfly имеет незначительные отличия.

Заключение

Выбор между Redis, Valkey и Dragonfly в 2026 году определяется тремя факторами: лицензионные требования, архитектурные потребности и зрелость экосистемы.

Redis 8.0 — максимум функциональности (vector sets, Query Engine, time series, JSON) в одном пакете, но с лицензионными нюансами. Оптимален для AI/ML-задач и команд, которым нужна полная экосистема Redis Stack.

Valkey 9.0 — чистый open source (BSD), масштабируемый кластер до 2 000 нод, стремительно растущее сообщество. Де-факто стандарт в облачных сервисах AWS, Google Cloud и Aiven. Лучший выбор для горизонтального масштабирования и compliance-чувствительных проектов.

Dragonfly 1.36 — архитектурный прорыв с многопоточностью, 25-кратное превосходство в пропускной способности на мощном оборудовании, 30–38% экономии памяти. Идеален для вертикального масштабирования и замены кластеров Redis одной нодой.

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

Источники

  1. Redis 8 is now GA — Redis Blog — официальный анонс Redis 8.0 с описанием нововведений и бенчмарков.
  2. Valkey 9.0: innovation, features, and improvements — Valkey Blog — официальный анонс Valkey 9.0.
  3. Scaling a Valkey Cluster to 1 Billion Requests per Second — Valkey Blog — детали тестирования кластера из 2 000 нод.
  4. Dragonfly vs. Valkey Benchmark: 4.5x Higher Throughput on GCP — Dragonfly Blog — бенчмарк Dragonfly vs Valkey на Google Cloud.
  5. Redis 8.0 vs. Valkey 8.1: A Technical Comparison — Dragonfly Blog — детальное сравнение Redis и Valkey.
  6. Redis returns to open source with AGPL license — The Register — история лицензионных изменений Redis.
  7. Valkey vs Redis: How to Choose in 2025 — Better Stack — практическое руководство по выбору.
← Все статьи