VPSРейтинг
Базы данныхМарт 2026 · 12 мин чтения

Valkey на VPS: замена Redis после смены лицензии

В марте 2024 Redis сменил лицензию с BSD на SSPL — и перестал быть настоящим open-source. Linux Foundation форкнул проект под именем Valkey. Сейчас это быстрее, открытее и уже включено в Ubuntu 24.04. Покажу как установить Valkey 8 на VPS и заменить им Redis.

1. Что случилось с Redis

Redis существовал с 2009 года под лицензией BSD — свободной и без ограничений. В марте 2024 компания Redis Ltd. изменила лицензию для всех новых версий, начиная с Redis 7.4:

Версия RedisЛицензияСтатус
Redis ≤ 7.2BSD 3-Clause✅ Open-source
Redis 7.4 – 7.xRSALv2 + SSPLv1❌ Проприетарная
Redis 8+RSALv2 + SSPLv1 + AGPLv3⚠️ Частично открытая
Valkey 7.2+BSD 3-Clause✅ Open-source (Linux Foundation)

SSPL (Server Side Public License) — лицензия, которую OSI не признаёт открытой. Она обязывает раскрывать весь код инфраструктуры, если вы предоставляете Redis как облачный сервис. Именно поэтому AWS и Google перестали предлагать Redis последних версий.

Что изменилось в Redis 8

В конце 2024 года Redis добавил AGPLv3 как третий вариант лицензии — формально вернувшись в open-source. Но AGPLv3 требует открывать изменения при SaaS-использовании, а главное — репутация уже подорвана. 83% крупных компаний успели мигрировать на Valkey или тестируют его.

1 апреля 2024 Linux Foundation объявила о форке Redis 7.2.4 под названием Valkey. Проект поддержали AWS, Google Cloud, Oracle, Alibaba, Ericsson, Huawei и Tencent. За несколько недель — 150+ контрибьюторов, 1000+ коммитов, production-ready релиз.

2. Что такое Valkey

Valkey — это high-performance in-memory key-value хранилище, fork Redis 7.2. Полная совместимость по протоколу, командам и типам данных — плюс собственные улучшения производительности. Актуальная версия — Valkey 8.1.

Async I/O (Valkey 8.0)

Сетевые операции вынесены в отдельные потоки. На 16 ядрах — 1,19 млн req/sec (230% быстрее v7.2).

🔓 BSD 3-Clause лицензия

Настоящий open-source без ограничений. Linux Foundation гарантирует, что лицензия не изменится снова.

🔄 Полная совместимость

Те же команды, порт 6379, протокол RESP. Любой Redis-клиент работает без изменений кода.

💾 Меньше памяти

При 50M ключей Valkey 8.1 потребляет на 28% меньше RAM, чем Redis 8.2 (3,77 ГБ vs 4,83 ГБ).

🐳 Docker-образ

Официальный образ valkey/valkey:8. Drop-in замена image: redis в любом docker-compose.yml.

🐧 В Ubuntu 24.04

Valkey включён в официальные репозитории Ubuntu 24.04 LTS и 24.10. Устанавливается через apt.

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

+37%

скорость SET

+16%

скорость GET

−28%

расход RAM

3. Установка через Docker

Docker — рекомендуемый способ для Ubuntu 22.04 и любого дистрибутива. Данные хранятся в именованном volume и сохраняются при обновлении контейнера.

Установить Docker (если ещё нет)

Официальный скрипт установки Docker
curl -fsSL https://get.docker.com | sh

Запустить Valkey одной командой

Самый быстрый способ — без Compose, просто чтобы проверить:

Быстрый запуск Valkey (тест)
docker run -d \
  --name valkey \
  -p 127.0.0.1:6379:6379 \
  valkey/valkey:8

# Проверить работу:
docker exec -it valkey valkey-cli ping
# → PONG

Через Docker Compose (рекомендуется)

~/valkey/docker-compose.yml
services:
  valkey:
    image: valkey/valkey:8
    container_name: valkey
    restart: always
    ports:
      - "127.0.0.1:6379:6379"
    volumes:
      - valkey-data:/data
    command: valkey-server --requirepass "СЛОЖНЫЙ_ПАРОЛЬ" --appendonly yes

volumes:
  valkey-data:
Запустить
mkdir ~/valkey && cd ~/valkey
# создайте docker-compose.yml с содержимым выше, затем:
docker compose up -d

# Проверить:
docker exec -it valkey valkey-cli -a "СЛОЖНЫЙ_ПАРОЛЬ" ping
# → PONG

Параметры в команде valkey-server

  • --requirepass — пароль для аутентификации (обязательно на продакшне)
  • --appendonly yes — AOF-персистентность: данные не теряются при рестарте

4. Установка напрямую (Ubuntu 24.04)

На Ubuntu 24.04 LTS Valkey доступен прямо из официальных репозиториев — пакет находится в Universe:

Ubuntu 24.04 LTS — установка через apt
sudo apt update
sudo apt install -y valkey valkey-tools

После установки Valkey автоматически запускается как systemd-сервис:

Управление сервисом
# Статус
sudo systemctl status valkey

# Запустить / перезапустить / остановить
sudo systemctl start valkey
sudo systemctl restart valkey
sudo systemctl stop valkey

# Автозапуск (включён по умолчанию)
sudo systemctl enable valkey

# Проверить подключение
valkey-cli ping
# → PONG

Ubuntu 22.04

В Ubuntu 22.04 Valkey в стандартных репозиториях недоступен. Используйте Docker (раздел выше) — это удобнее и проще для обновления.

5. Пароль и базовая настройка

По умолчанию Valkey слушает на 127.0.0.1:6379 и не требует пароля. Если сервер доступен извне — установите пароль.

Настройка через valkey.conf (apt-установка)

Конфиг находится в /etc/valkey/valkey.conf. Ключевые параметры:

/etc/valkey/valkey.conf — важные параметры
# Слушать только localhost (безопасно по умолчанию)
bind 127.0.0.1

# Пароль обязателен, если сервер доступен из сети
requirepass "СЛОЖНЫЙ_ПАРОЛЬ_МИНИМУМ_32_СИМВОЛА"

# Персистентность: сохранять данные на диск
appendonly yes
appendfsync everysec

# Лимит памяти (например, 256 МБ)
maxmemory 256mb
maxmemory-policy allkeys-lru
Применить изменения
sudo systemctl restart valkey

maxmemory-policy

Определяет, что делать когда память заполнена:

allkeys-lruудалять наименее используемые ключи (для кэша — оптимально)
volatile-lruудалять только ключи с TTL
noevictionвозвращать ошибку при попытке записи (для очередей и сессий)

6. Docker Compose с приложением

Типичный сценарий — запустить Valkey вместе с веб-приложением. Пример с Node.js/Next.js приложением и Valkey как кэш-сервером:

docker-compose.yml — приложение + Valkey
services:
  app:
    build: .
    restart: always
    ports:
      - "127.0.0.1:3000:3000"
    environment:
      REDIS_URL: redis://:{VALKEY_PASSWORD}@valkey:6379
    depends_on:
      valkey:
        condition: service_healthy

  valkey:
    image: valkey/valkey:8
    container_name: valkey
    restart: always
    volumes:
      - valkey-data:/data
    command: valkey-server --requirepass "{VALKEY_PASSWORD}" --appendonly yes
    healthcheck:
      test: ["CMD", "valkey-cli", "-a", "{VALKEY_PASSWORD}", "ping"]
      interval: 10s
      timeout: 5s
      retries: 3

volumes:
  valkey-data:
.env — рядом с docker-compose.yml
VALKEY_PASSWORD=длинный_случайный_пароль_здесь
Запуск
docker compose up -d

Подключение из приложения

Любой Redis-клиент работает с Valkey без изменений:

Node.js / ioredis
import Redis from 'ioredis'

const redis = new Redis(process.env.REDIS_URL)

await redis.set('key', 'value', 'EX', 3600) // TTL 1 час
const value = await redis.get('key')
Python / redis-py
import redis

r = redis.from_url(os.environ['REDIS_URL'])

r.set('key', 'value', ex=3600)  # TTL 1 час
value = r.get('key')
PHP / Predis
$client = new Predis\Client(getenv('REDIS_URL'));

$client->set('key', 'value');
$client->expire('key', 3600);
$value = $client->get('key');

Замена Redis в Nextcloud, Gitea, n8n

В docker-compose.yml этих приложений замените image: redis на image: valkey/valkey:8 — больше ничего менять не нужно. Порт, переменные и протокол идентичны.

7. Миграция с Redis

Valkey совместим с Redis вплоть до версии 7.2. Если вы используете Redis 7.2 или старше — миграция прозрачна. Redis 7.4 и выше несовместимы с Valkey.

Способ 1: горячая замена (downtime ~1 мин)

Самый простой вариант — сделать RDB-дамп и загрузить в Valkey. Подходит если данные в Redis некритичны или легко восстанавливаются.

На старом Redis-сервере
# Создать дамп
redis-cli -a "REDIS_PASSWORD" BGSAVE

# Найти файл дампа
redis-cli -a "REDIS_PASSWORD" CONFIG GET dir
# Обычно /var/lib/redis/dump.rdb
На сервере с Valkey
# Остановить Valkey
docker compose stop valkey

# Скопировать dump.rdb в volume (для Docker)
docker run --rm -v valkey-data:/data -v /tmp:/backup \
  alpine cp /backup/dump.rdb /data/dump.rdb

# Запустить Valkey — он загрузит dump.rdb автоматически
docker compose start valkey

# Проверить количество ключей
docker exec -it valkey valkey-cli -a "ПАРОЛЬ" DBSIZE

Способ 2: через репликацию (без простоя)

Настройте Valkey как реплику Redis, дождитесь полной синхронизации, затем переключите приложение.

Настройка репликации в valkey.conf или docker command
# Valkey реплицирует данные с Redis-мастера
replicaof REDIS_HOST 6379
masterauth "REDIS_PASSWORD"
requirepass "VALKEY_PASSWORD"
После синхронизации — отключить репликацию
# Продвинуть Valkey в мастера (на Valkey-сервере):
valkey-cli -a "VALKEY_PASSWORD" REPLICAOF NO ONE

# Переключить приложение на Valkey, затем выключить Redis

Проверить совместимость перед миграцией

Проверить версию и используемые команды
# Версия текущего Redis
redis-cli -a "ПАРОЛЬ" INFO server | grep redis_version

# Все команды, которые вызывались (нужен slowlog или monitor)
redis-cli -a "ПАРОЛЬ" COMMAND COUNT

# Посмотреть используемые типы данных
redis-cli -a "ПАРОЛЬ" DEBUG SLEEP 0

Что не поддерживается в Valkey

  • — Redis 7.4+ функции (RedisJSON, RedisSearch и другие модули Redis Ltd.)
  • — Команды специфичные для Redis Enterprise
  • — Redis 7.4+ Cluster протокол (несовместим)

Стандартные команды Redis 7.2 и ниже работают без изменений.

Частые вопросы

Нужен VPS для Valkey и ваших сервисов? Смотрите лучшие варианты

Рейтинг VPS →

Смотрите также