Хранилище данных Valkey 9.0 в оперативной памяти обеспечивает атомарную миграцию слотов и кластеризацию баз данных

После выхода версии v8.0 ( год назад) вышла Valkey 9.0 — вторая крупная версия этого хранилища данных с открытым исходным кодом, совместимого с Redis. Главное изменение — атомарная миграция слотов, фундаментальная переработка способа перемещения данных между узлами в кластере.
Раньше Valkey использовал поключевой подход: каждый ключ перемещался, удалялся и повторно вставлялся отдельно. Это работало достаточно хорошо, но при высокой нагрузке или работе с большими наборами данных это могло привести к снижению производительности, блокировке миграции и даже к недоступности данных до завершения процесса.
В Valkey 9.0 эта функция заменена системой миграции на основе слотов. Вместо того чтобы передавать ключи по одному, целые слоты, каждый из которых содержит группу ключей, переносятся атомарно с использованием формата файла только для добавления. Это позволяет эффективно передавать такие коллекции, как наборы или списки, не перегружая входной буфер целевого узла. В результате миграция проходит более плавно, требуется меньше повторных попыток, а частичное состояние данных не сохраняется.
Кроме того, в этом обновлении добавлена функция истечения срока действия хэш-полей. До сих пор в Valkey можно было установить срок действия только на уровне ключа, то есть если нужно было истечь срок действия одного поля, приходилось удалять весь хэш. В новой версии появились такие команды, как HEXPIRE
, HEXPIREAT
, HGETEX
, и HPERSIST
, которые позволяют детально контролировать истечение срока действия на уровне полей.
Ещё одно заметное изменение, которое отличается от устаревшего дизайна предыдущей версии, — это полная поддержка пронумерованных баз данных в кластерном режиме.
Раньше развертывание кластера было привязано к одной базе данных (db 0
), что ограничивало масштабируемость. Однако теперь пользователи могут логически разделять рабочие нагрузки и избегать конфликтов ключей, не отказываясь от функциональности кластера. Это удобная возможность для многопользовательских сред или сегментированных приложений.
Помимо важных функций, в Valkey 9.0 реализован длинный список оптимизаций, направленных на повышение пропускной способности и снижение задержек:
- 1 миллиард запросов в секунду: повышенная отказоустойчивость кластера позволяет масштабировать его до 2000 узлов и обрабатывать до миллиарда запросов в секунду.
- Предварительная выборка памяти конвейера: повышает пропускную способность до 40 %.
- Ответы с нулевым копированием: сокращают нагрузку на память и улучшают обработку больших запросов.
- Поддержка Multipath TCP: снижает задержку примерно на 25 % при использовании многопутевых сетевых соединений.
- SIMD-оптимизация: добавляет векторизованную обработку для
BITCOUNT
иHyperLogLog
, повышая производительность до 200 %. - Условное удаление: новая команда
DELIFEQ
удаляет ключи только в том случае, если их значения соответствуют заданному условию. - Фильтрация списка клиентов: позволяет выполнять фильтрацию по флагам, именам, IP-адресам и другим параметрам для более точного мониторинга.
Наконец, в рамках проекта были пересмотрены 25 ранее устаревших команд, и они были восстановлены. Для получения дополнительной информации см. объявление: https://valkey.io/blog/introducing-valkey-9/. Valkey 9.0 теперь доступен в виде двоичных файлов, контейнеров и исходного кода, а дистрибутивные пакеты появятся в ближайшее время.
Редактор: AndreyEx
Важно: Данная статья носит информационный характер. Автор не несёт ответственности за возможные сбои или ошибки, возникшие при использовании описанного программного обеспечения.