Valkey 9.1

good-penguin.png

Сообщество Valkey объявило о выпуске Valkey 9.1 — новой стабильной версии высокопроизводительного хранилища данных типа «ключ-значение» с открытым исходным кодом (лицензия BSD), которое поддерживает различные сценарии использования, такие как кэширование и очереди сообщений, а также может выступать в качестве основной базы данных. Проект поддерживается Linux Foundation, что гарантирует его постоянную доступность в виде открытого исходного кода.

Проект является форком Redis и создан после изменений в его лицензировании.

Этот выпуск включает в себя новые функции, усовершенствования в безопасности и мониторинге, а также производительности и эффективности инструментария. В подготовке релиза приняли участие более 80 человек.

Основные изменения

  • Lua вынесен в отдельный модуль. В Valkey 9.1 движок сценариев Lua отделён от основного сервера и перенесён в самостоятельный модуль. Такое разделение уменьшает поверхность атаки ядра Valkey и даёт администраторам возможность полностью отключить Lua, если сценарии на нём не используются. Чтобы было проще понять, какие движки сценариев загружены в системе, команда INFO получила новый раздел ответа — Scripting Engines.

  • Новые исправления безопасности. В стабильный выпуск 9.1.0 вошли исправления трёх уязвимостей: use-after-free в механизме разблокировки клиента, некорректного доступа к памяти в команде 7RESTORE, а также use-after-free при полной синхронизации во время выполнения Lua/function-кода с уступкой выполнения. В заметках они указаны как CVE-2026–23479, CVE-2026–25243 и CVE-2026–23631.

  • Database-level ACL. Добавлена система контроля доступа на уровне отдельных баз данных. Это позволяет тоньше разделять права в многопользовательских конфигурациях и не ограничиваться только глобальными правилами доступа на уровне всего экземпляра Valkey.

  • Автоматическая перезагрузка TLS-сертификатов. Valkey 9.1 получил поддержку автоматической перезагрузки TLS-сертификатов. Для администраторов это означает меньше ручных операций при ротации сертификатов и более удобную эксплуатацию защищённых инсталляций.

  • Новая команда HGETDEL. Команда атомарно получает и удаляет одно или несколько полей из hash-структуры. Практический смысл — сценарии, похожие на очередь или одноразовое потребление данных, где раньше приходилось комбинировать HGET и HDEL через транзакцию.

  • Новая команда MSETEX. MSETEX позволяет одной командой установить несколько ключей с общим временем жизни. Раньше для такого сценария требовались несколько вызовов SETEX либо связка SET и EXPIRE через pipeline. Новая команда уменьшает число обращений и упрощает типичный код для сессионных и временных данных.

  • Новая команда CLUSTERSCAN. В кластерах появилась единая команда для сканирования ключей по всем узлам. Раньше клиентам приходилось самостоятельно выполнять SCAN на каждом узле и объединять результаты. CLUSTERSCAN упрощает клиентские библиотеки, админские инструменты и эксплуатационные задачи вроде поиска ключей по шаблону или типу во всём кластере.

  • Оптимизация потребления памяти строками. За счёт внутренних оптимизаций указателей для строк короче 128 байт заявлено снижение потребления памяти до 20%. Это особенно важно для типичных кэширующих нагрузок, где хранится большое количество небольших значений.

  • Меньше памяти для sorted sets. Оптимизации skiplist-структур уменьшают расход памяти для sorted set до 10%. Дополнительно ускорены операции над отсортированными множествами, включая запросы вроде ZRANGEBYSCORE и ZRANGEBYLEX.

  • Ускоренная работа с rehashing. Внутреннее перераспределение hash-таблиц, которое часто проявляется при росте keyspace, оптимизировано так, чтобы уменьшить задержки. В release notes также упомянуто снижение latency spikes за счёт incremental page release.

  • Улучшенная модель I/O threading. В релиз-кандидате 9.1.0-rc2 была переработана модель взаимодействия потоков ввода-вывода с использованием lock-free queues. В заметках указано увеличение пропускной способности на 8–17%.

  • Ускорение GET и SET. Valkey теперь по умолчанию использует аппаратные часы там, где это возможно, что снижает накладные расходы на системные вызовы, связанные со временем. Проект заявляет прирост производительности GET и SET до 3% в целом.

  • Более быстрые массовые удаления. При операциях вроде SREM, ZREM и HDEL Valkey теперь временно приостанавливает внутреннее изменение размеров hash-таблиц, чтобы избежать лишнего rehashing и ускорить массовое удаление элементов.

  • Более эффективное создание реплик при AOF. При создании реплики с включённым AOF теперь повторно используется полученный RDB-файл вместо генерации нового снимка для начального AOF base file. Это должно снизить лишнюю нагрузку при развёртывании реплик.

  • Улучшения valkey-cli и valkey-benchmark. В valkey-cli добавлена поддержка atomic slot migration через параметр --cluster-use-atomic-slot-migration для операций --cluster rebalance и --cluster reshard. В valkey-benchmark добавлен вывод распределения RPS, а также параметры --warmup и --duration, что делает тестирование производительности более управляемым.

Отдельно вместе с Valkey 9.1 в экосистеме продвигаются связанные проекты: Valkey Admin для визуального управления кластерами, Valkey Search 1.2 с полнотекстовым поиском, числовыми фильтрами, тегами и векторным поиском, а также клиентская библиотека Valkey GLIDE.

Valkey 9.1 заметное обновление с точки зрения эксплуатации: меньше памяти на типичных структурах, меньше задержек при внутренних перестроениях, новые команды для кластеров и временных данных, а также более аккуратная модель безопасности для production-инсталляций.

>>> Источник:

©  Linux.org.ru