Valkey: форк Redis — зачем переходить и как мигрировать

Почему появился Valkey: история с лицензией Redis

В марте 2024 Redis Labs сменила лицензию Redis с BSD на Server Side Public License (SSPL) + Redis Source Available License (RSALv2). Это означает:

  • Нельзя использовать Redis как managed service (AWS ElastiCache, GCP Memorystore)
  • Нельзя продавать Redis как часть SaaS без коммерческой лицензии
  • Можно использовать бесплатно для внутренних нужд

Реакция сообщества: Linux Foundation создала Valkey — форк Redis 7.2.4 (последняя BSD-версия). Участники: AWS, Google, Oracle, Ericsson, Snap.

КритерийRedis 7.4+Valkey 8.x
ЛицензияSSPL + RSALv2BSD 3-Clause
Managed servicesRedis Cloud толькоAWS, GCP, Azure, любой
Multi-threaded I/OНетДа (io-threads)
Совместимость100% API-совместим с Redis 7.2
РазвитиеRedis Inc.Linux Foundation + community

Установка Valkey

# Из пакетов (Debian/Ubuntu)
curl -fsSL https://packages.valkey.io/gpg | gpg --dearmor -o /usr/share/keyrings/valkey-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/valkey-archive-keyring.gpg] https://packages.valkey.io/deb stable main" | \
  tee /etc/apt/sources.list.d/valkey.list
apt update && apt install valkey

# Из Docker
docker run -d --name valkey -p 6379:6379 valkey/valkey:8-alpine

# Из исходников
git clone https://github.com/valkey-io/valkey.git
cd valkey && make -j$(nproc)
make install

# Проверка
valkey-cli ping
# PONG

valkey-cli INFO server | grep valkey_version
# valkey_version:8.0.0
# Конфигурация (valkey.conf) — идентична redis.conf
bind 0.0.0.0
port 6379
requirepass YourStrongPassword
maxmemory 4gb
maxmemory-policy allkeys-lru
appendonly yes
appendfsync everysec

# Новое: multi-threaded I/O
io-threads 4
io-threads-do-reads yes
Совет: io-threads — одна из главных причин перехода на Valkey. Redis обрабатывает I/O в одном потоке. Valkey с io-threads=4 даёт +40-70% throughput на многоядерных серверах.

Миграция с Redis на Valkey: zero-downtime

Valkey на 100% совместим с Redis 7.2 на уровне протокола, команд и RDB/AOF формата. Миграция проста:

# Метод 1: Замена бинарника (для standalone)
systemctl stop redis
cp /usr/bin/redis-server /usr/bin/redis-server.bak
ln -sf /usr/bin/valkey-server /usr/bin/redis-server
# valkey.conf = redis.conf (тот же формат)
cp /etc/redis/redis.conf /etc/valkey/valkey.conf
systemctl start valkey

# Метод 2: Replication (zero-downtime)
# 1. Запустить Valkey как реплику Redis
# valkey.conf:
replicaof redis-master.internal 6379
masterauth YourRedisPassword

# 2. Дождаться полной синхронизации
valkey-cli INFO replication
# role:slave
# master_link_status:up
# master_sync_in_progress:0  ← синхронизация завершена

# 3. Промотировать Valkey в master
valkey-cli REPLICAOF NO ONE

# 4. Переключить приложения на Valkey (сменить hostname/IP)
# 5. Остановить Redis

Все клиентские библиотеки работают без изменений:

# Python (redis-py) — просто меняем хост
import redis
r = redis.Redis(host='valkey.internal', port=6379, password='pass')
r.set('key', 'value')  # Работает идентично

# Node.js (ioredis)
const Redis = require('ioredis');
const client = new Redis({ host: 'valkey.internal' });

# Go (go-redis)
rdb := redis.NewClient(&redis.Options{Addr: "valkey.internal:6379"})

Производительность: Valkey vs Redis

Бенчмарки: 8 CPU Xeon, 32 GB RAM, 10G NIC. Тест: valkey-benchmark -t set,get -n 10000000 -c 256 -P 32 --threads 4.

ОперацияRedis 7.2 (1 thread)Valkey 8.0 (io-threads=4)Разница
SET (pipeline 32)1,200K ops/s1,850K ops/s+54%
GET (pipeline 32)1,400K ops/s2,100K ops/s+50%
SET (no pipeline)180K ops/s260K ops/s+44%
GET (no pipeline)210K ops/s310K ops/s+48%
MSET (10 keys)95K ops/s145K ops/s+53%
Latency p99 (GET)0.3 мс0.2 мс-33%

Multi-threaded I/O — главное преимущество Valkey. Команды по-прежнему выполняются в одном потоке (атомарность), но чтение/запись сокетов параллелится.

Valkey Cluster и High Availability

# Создание Valkey Cluster (3 master + 3 replica)
valkey-cli --cluster create \
  10.0.1.1:6379 10.0.1.2:6379 10.0.1.3:6379 \
  10.0.1.4:6379 10.0.1.5:6379 10.0.1.6:6379 \
  --cluster-replicas 1 -a YourPassword

# Проверка
valkey-cli --cluster check 10.0.1.1:6379 -a YourPassword
# [OK] All nodes agree about slots configuration
# [OK] All 16384 slots covered

В Kubernetes через Helm:

helm repo add bitnami https://charts.bitnami.com/bitnami
helm install valkey bitnami/valkey-cluster \
  --set password=YourPassword \
  --set cluster.nodes=6 \
  --set cluster.replicas=1 \
  --set persistence.size=8Gi
МетрикаRedis 7.2Valkey 8.0
Throughput (io-threads=4)1.2M ops/s2.1M ops/s
ЛицензияSSPL (ограничения)BSD (свободная)
Managed servicesRedis CloudAWS, GCP, любой провайдер
API compatibility100%
Рекомендация: Для новых проектов — используйте Valkey. Для существующих Redis — мигрируйте при удобном случае. Миграция занимает 1 час через replication, клиентский код менять не нужно.

Часто задаваемые вопросы

Форк. Valkey создан из исходного кода Redis 7.2.4 (последняя BSD-версия). С этого момента Valkey и Redis развиваются независимо. Valkey добавляет свои фичи (io-threads улучшения), Redis — свои (Redis 7.4+ под SSPL).

Не все. Модули, использующие Redis Module API 7.2 — работают. RedisJSON, RedisSearch, RedisTimeSeries — лицензированы Redis Ltd, не совместимы с Valkey. Альтернативы: для JSON — встроенные JSON-команды, для search — RediSearch форки (FT).

Да, AWS ElastiCache уже предлагает Valkey как опцию (ElastiCache Serverless с Valkey). Amazon MemoryDB также переходит на Valkey. Google Cloud Memorystore тоже добавил Valkey.

SSPL позволяет использовать Redis бесплатно для внутренних целей. Причины мигрировать: io-threads (лучшая производительность), уверенность в open-source лицензии (BSD), активное сообщество Linux Foundation. Если работает и не критично — можно подождать.

KeyDB — форк Redis 6, создан Snap Inc. Полностью multi-threaded (не только I/O, но и выполнение команд). Плюс: максимальная производительность. Минус: потенциальные проблемы с атомарностью, менее активное развитие. Valkey — более консервативный форк с поддержкой Linux Foundation.

Нужна помощь с внедрением?

Настроим, оптимизируем и возьмём на поддержку вашу инфраструктуру. 15+ лет опыта, 8 серверов Dell Xeon в дата-центре МТС.

📞 Связаться с нами

Комментарии 0

Оставить комментарий

6 + 3 =