В марте 2024 года Redis сменил лицензию с BSD на дуальную: SSPL + RSALv2. Обе лицензии признаны несовместимыми с определением open-source по версии OSI. Для коммерческого использования это означает ограничения, зависимость от вендора и потенциальные лицензионные риски. В ответ Linux Foundation форкнул Redis 7.2.4 и выпустил Valkey - полностью BSD-совместимый форк с прозрачной моделью управления. Проект поддержали AWS, Google Cloud, Oracle, Ericsson и ряд других крупных игроков. Если вы сейчас используете Redis 7 и не планируете платить за Redis Software или Redis Cloud, Valkey - прямой путь к миграции.
Что такое Valkey
Valkey - это форк Redis 7.2.4, созданный в марте 2024 года под эгидой Linux Foundation. Лицензия BSD 3-Clause, без ограничений на коммерческое использование.
Ключевые характеристики:
- Полная совместимость на уровне API: все команды Redis работают без изменений
- Совместимость форматов данных: RDB и AOF файлы читаются напрямую
- Протокол RESP2/RESP3: существующие клиентские библиотеки (redis-py, Jedis, ioredis, go-redis) не требуют изменений
- Порт по умолчанию: 6379 - тот же, что у Redis
- Текущая версия: Valkey 8.x (2025)
В Valkey 8 добавлены улучшения многопоточной обработки I/O, повышающие пропускную способность на многоядерных серверах. Redis 7 в большинстве операций однопоточный по логике выполнения команд - Valkey начал двигаться в сторону более широкого использования потоков без нарушения семантики.
Sentinel и Cluster поддерживаются полностью - конфигурации переносятся без правок.
Valkey vs Redis 7 vs Dragonfly vs KeyDB
- Valkey 8 - лицензия BSD 3-Clause, полная совместимость с Redis API (форк), производительность выше Redis 7 на I/O-нагрузке, поддержка от Linux Foundation, AWS, Google Cloud
- Redis 7.4+ - лицензия SSPL + RSALv2 (не open-source), эталон совместимости, поддержка от Redis Ltd.
- Dragonfly - лицензия BSL 1.1 (тоже не open-source), высокая совместимость, но не 100%, заявлена значительно более высокая производительность, поддержка от Dragonfly Inc.
- KeyDB - лицензия BSD (форк Redis), высокая совместимость, многопоточный, поддержка от Snap Inc. (развитие замедлилось)
Dragonfly и KeyDB - не drop-in замены в полном смысле: у обоих есть несовместимости по отдельным командам или поведению Cluster. Valkey сохраняет бинарную совместимость, потому что это форк, а не реимплементация.
Установка Valkey на Ubuntu/Debian
Официальный репозиторий Valkey поддерживает Ubuntu 20.04, 22.04, 24.04 и Debian 11/12.
Шаг 1 - Добавить ключ и репозиторий:
curl -fsSL https://packages.valkey.io/valkey-archive-keyring.gpg | sudo 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/ubuntu $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/valkey.list
Шаг 2 - Установить пакет:
sudo apt update
sudo apt install valkey -y
Шаг 3 - Включить и запустить сервис:
sudo systemctl enable valkey
sudo systemctl start valkey
Шаг 4 - Проверить версию:
valkey-server --version
# Output: Valkey server v=8.x.x ...
Конфигурационный файл: /etc/valkey/valkey.conf
Установка Valkey на CentOS/AlmaLinux
На CentOS Stream 9 и AlmaLinux 9 официальный RPM-репозиторий подключается аналогично.
Шаг 1 - Добавить репозиторий:
sudo tee /etc/yum.repos.d/valkey.repo << 'EOF'
[valkey]
name=Valkey
baseurl=https://packages.valkey.io/rhel/$releasever/$basearch/
enabled=1
gpgcheck=1
gpgkey=https://packages.valkey.io/valkey-archive-keyring.gpg
EOF
Шаг 2 - Установить:
sudo dnf install valkey -y
Шаг 3 - Запустить:
sudo systemctl enable --now valkey
Если репозиторий недоступен для вашего дистрибутива, Valkey собирается из исходников:
# Зависимости
sudo dnf install gcc make tcl -y
# Скачать и собрать
wget https://github.com/valkey-io/valkey/archive/refs/tags/8.0.0.tar.gz
tar xzf 8.0.0.tar.gz
cd valkey-8.0.0
make -j$(nproc)
sudo make install
# Конфиг
sudo mkdir -p /etc/valkey
sudo cp valkey.conf /etc/valkey/valkey.conf
Миграция с Redis 7 на Valkey
Так как Valkey - форк Redis 7.2.4, формат RDB-файлов идентичен. Простейшая миграция: остановить Redis, заменить бинарник, запустить Valkey с тем же RDB-файлом.
Вариант 1 - Замена на том же сервере (с кратким downtime):
# 1. Сделать снапшот данных
redis-cli BGSAVE
# Дождаться завершения
redis-cli LASTSAVE
# 2. Остановить Redis
sudo systemctl stop redis
# 3. Скопировать RDB в директорию Valkey
redis-cli CONFIG GET dir
# Обычно /var/lib/redis/dump.rdb
sudo cp /var/lib/redis/dump.rdb /var/lib/valkey/dump.rdb
sudo chown valkey:valkey /var/lib/valkey/dump.rdb
# 4. Запустить Valkey
sudo systemctl start valkey
# 5. Проверить данные
valkey-cli DBSIZE
Вариант 2 - Живая репликация (без downtime):
# На новом сервере с Valkey - настроить репликацию от Redis
valkey-cli REPLICAOF <redis-host> 6379
# Дождаться полной синхронизации
valkey-cli INFO replication
# master_link_status:up - синхронизация завершена
# Переключить приложение на новый сервер
# Затем отключить репликацию
valkey-cli REPLICAOF NO ONE
Этот метод работает потому, что Valkey понимает протокол репликации Redis 7 без изменений.
Ключевые отличия в конфигурации
Файл конфигурации Valkey: /etc/valkey/valkey.conf. Большинство директив идентичны redis.conf. Отличия минимальны:
- bind, port, daemonize, requirepass, maxmemory, maxmemory-policy - идентичны Redis 7, переносятся без изменений
- io-threads - новая директива в Valkey 8, включает многопоточный I/O (в Redis 7 отсутствует)
- io-threads-do-reads - включать вместе с io-threads
Пример включения многопоточного I/O в valkey.conf:
io-threads 4
io-threads-do-reads yes
Рекомендуется устанавливать io-threads равным количеству физических ядер минус 1. На VPS с 4 ядрами - io-threads 3.
Если вы переносите redis.conf в valkey.conf - файл переносится без правок для базовой конфигурации. Специфические директивы Redis 7.4+ (введённые после форка) могут не распознаваться - Valkey выдаст предупреждение в лог, но не упадёт.
Проверка и первые команды
После запуска Valkey базовая проверка:
# Проверка связи
valkey-cli ping
# PONG
# Информация о сервере
valkey-cli info server | grep -E "valkey_version|redis_version|os:|tcp_port"
# valkey_version:8.0.0
# redis_version:8.0.0
# tcp_port:6379
# Запись и чтение ключа
valkey-cli SET testkey "hello from valkey"
valkey-cli GET testkey
# "hello from valkey"
# Проверить количество ключей
valkey-cli DBSIZE
# Использование памяти
valkey-cli info memory | grep used_memory_human
# Benchmark
valkey-benchmark -q -n 100000
В выводе INFO поле redis_version присутствует для обратной совместимости - это нормально. Клиентские библиотеки, проверяющие версию через это поле, продолжат работать корректно.
Часто задаваемые вопросы
Valkey готов к продакшену? Да. Valkey 8.x - стабильная ветка, используется в продакшене крупными облачными провайдерами. AWS ElastiCache и AWS MemoryDB в 2024 году перешли на Valkey как основной движок. Google Cloud Memorystore также добавил поддержку Valkey.
Нужно ли менять клиентские библиотеки? Нет. redis-py, Jedis, ioredis, go-redis, StackExchange.Redis и другие популярные клиенты работают с Valkey без изменений - протокол RESP2/RESP3 идентичен. Менять строку подключения не нужно, только хост/порт если переезжаете на другой сервер.
Работает ли Redis Sentinel и Cluster с Valkey? Да, оба режима поддерживаются полностью. Конфигурация sentinel.conf переносится без изменений. Для Cluster - valkey-cli --cluster работает с теми же параметрами, что redis-cli --cluster.
AWS ElastiCache поддерживает Valkey? Да. С октября 2024 года AWS ElastiCache предлагает Valkey как отдельный движок наряду с Redis OSS. При создании нового кластера в консоли можно выбрать Valkey 7.2 или Valkey 8.0.
Что если нужны функции Redis 7.4+ (введённые после форка)? Valkey развивается независимо - версия 8.0 уже включает собственные улучшения производительности. Следить за roadmap можно на github.com/valkey-io/valkey. Функции, специфичные для коммерческого Redis (Redis Stack, Search/JSON в платной версии), в Valkey не включены - но open-source версии этих модулей существуют отдельно.