По моим ощущениям про Valkey стали говорить всё больше, решила сделать небольшой обзорный пост без погружения в технические тонкости работы кластеров.
➡️ Что это такое
Redis — это хранилище типа "ключ-значение", которое держит данные в оперативной памяти. Благодаря этому он работает очень быстро, поэтому обычно используется как кэш.
Valkey — изначально форк Redis и его прямой конкурент.
При этом и Redis, и Valkey умеют сохранять данные на диск, реплицироваться и работать кластером. Да и других фич много, например:
🔴TTL - можно задать время жизни ключа, после которого он автоматически удалится (например, чтобы хранить смс-код 60 секунд)
🔴Атомарный счетчик - можно атомарно увеличить или уменьшить значение (например, чтобы посчитать количество запросов).
🔴Sorted Set - множество элементов с числовым score, которое автоматически поддерживается отсортированным (например, удобно формировать оперативный рейтинг игроков).
➡️ Немного истории
До 2024 года Redis распостранялся под лицензией, которая позволяла брать код, модифицировать и даже строить на его основе коммерческие Redis-as-a-Service (так делали AWS, Google Cloud и др.)
В 2024 Redis Ltd. предложили две новые лицензии:
1️⃣Redis можно бесплатно использовать внутри компаний, но нельзя делать конкурирующий managed service
2️⃣Можно предоставлять Redis-as-a-Service, но возникают серьёзные требования по открытию исходников инфраструктуры этого сервиса
Для компаний, которые просто использовали Redis как кэш внутри своих продуктов, почти ничего не изменилось. А вот облачным провайдерам стало сложнее продавать Redis-as-a-Service.
На основе версии под старой лицензией (Redis 7.2.4) сделали форк (независимую копию) и назвали его Valkey.
Valkey стал активно развиваться параллельно Redis.
Он имеет опенсорсную лицению, на ней можно делать облачные managed service.
Redis в 2025 добавил третий вариант лицензии со своими особенностями.
Valkey сохранил совместимость с Redis 7.2 и более ранними версиями, поэтому со старых Redis можно переехать без изменения кода. В новых версиях продукты постепенно расходятся.
➡️ Базовое сравнение
▶️Лицензия
У Valkey: BSD-3-Clause.
У Redis: RSALv2, SSPLv1 или AGPLv3.
Для обычной компании, которая использует Redis внутри своего продукта, особо разницы нет. Если же вы делаете Redis-as-a-Service, то лицензия Valkey проще.
▶️Функциональность
Основная функциональность (кэширование, sorted sets, TTL и др.) есть и там и там.
Redis активно развивает специализированные фичи:
full-text search
vector search
time series
Bloom filter
top-k
Часть из них есть в модулях Valkey.
Сравнение по фичам на сайте Redis
▶️Производительность
Valkey сильно оптимизирует производительность и при сравнении с Redis 7 обычно выигрывает, а вот с Redis 8 - не всегда. Насколько я разобралась, все зависит от операции и характера нагрузки.
Ссылки на разные бенчмарки приложу в комментах.
▶️Однопоточность и использование остальных ядер
У Redis есть особенность: выполнение команд идет последовательно в одном потоке.
Условно для наглядности:
CPU
core 1 ██████████
core 2 ██
core 3 ██
core 4 ██
Основной поток занят выполнением команд, остальные ядра используются меньше - на них выполняются фоновые задачи и часть I/O.
Valkey особенно активно переносит такую вспомогательную работу из основного потока.
Например, в этой статье приводится пример с TLS handshake: криптографические вычисления при установке защищеного соединения выносятся в дополнительный поток на другое ядро.
Статья ангажирована в пользу Valkey, но в ней интересно описаны технические аспекты, которые относятся к эксплуатации больших production-кластеров (репликация, миграция шардов, дефрагменация памяти и др.)
➡️ Выводы
Для базового кэширования Redis и Valkey очень похожи: основные структуры данных, TTL, кластерный режим есть у обоих.
По производительности однозначного победителя нет: Valkey выигрывает в одних сценариях, новый Redis 8 - в других.
Для разработки managed service (продавать кэш как сервис) лицензия Valkey сильно проще.
