Valkey 8.1: форк Redis містить продуктивність, покращення пам’яті та нові модулі

Валкі

Це було оголошено вихід нової версії «Valkey 8.1», форк Redis, який народився після переходу на пропрієтарну ліцензію, і який прагне зберегти відкриту філософію оригінального проекту.

Valkey 8.1 Він містить велику кількість покращень і змін, основна увага приділяється оптимізації продуктивності, що зменшує затримку, підвищує ефективність пам’яті та нові модульні можливості.

Ключові нові функції у Valkey 8.1

Uno найбільш істотних змін у цій версії є повністю переписати хеш-таблицю, який використовується як у сховищі даних типу "ключ-значення", так і в таких структурованих типах даних, як хеш, набір і відсортований набір. Завдяки цьому редизайну, Було досягнуто зменшення використання пам’яті: на 20 байт менше на ключ без TTL, і до 30 байт, якщо ключ має визначений час життя. Крім того, зменшення довільного доступу до пам’яті призвело до підвищення продуктивності на 10% в однопоточних середовищах введення-виведення.

Ще однією новою функцією у Valkey 8.1 є ітерація по ключах у таких операціях, як команда KEYS або Передача ключів між вузлами в кластері тепер включає систему попереднього завантаження кешу, що дозволяє наступному ключу бути доступним до початку обробки. Цей підхід збільшив швидкість пошуку ключів у 3,5 рази завдяки кращому використанню кеша процесора.

Покращення багатопотокового введення-виведення та TLS

Valkey продовжує перехід на багатопотокову модель введення-виведення. Тепер, Обробка TLS-з'єднання виконується окремими потоками, яка втричі збільшила здатність приймати нові підключення. Такі функції, як SSL_pending() і ERR_clear_error(), також були виділені в окремі потоки, що призвело до підвищення продуктивності на 10% для операцій SET і на 22% для операцій GET.

Покращено реплікацію, особливо в середовищах з активним TLS, усуваючи надлишкові операції, такі як непотрібні контрольні суми. Це призвело до 18% покращення повної синхронізації під час бездискової реплікації та 47% зниження вартості операцій копіювання та запису.

Оптимізації на впорядкованих множинах і ймовірнісних типах

El Команда ZRANK для замовлених наборів було оптимізовано і Тепер це на 45% швидше, тоді як ZADD перейняв інструкції SIMD для досягнення більшої ефективності. Для імовірнісних типів даних використання HyperLogLog було покращено, щоб використовувати лише 12 КБ фіксованої пам’яті, а використання інструкцій AVX2 дозволило збільшити продуктивність операцій PFMERGE і PFCOUNT до 12 разів, а BITCOUNT – до 5 разів.

Безперервна активна дефрагментація та більше контролю над реєстрами

El також була вдосконалена система активної дефрагментації щоб уникнути блокувань або затримок. Тепер кожен цикл дефрагментації триває лише 500 мікросекунд, і була реалізована стратегія боротьби з голодом, щоб запобігти відкладенню цих завдань через довгострокові операції.

Були введені Нові параметри конфігурації для форматування запису, включаючи спеціальні формати часу та новий режим COMMANDLOG, який реєструє довгі запити та відповіді. Крім того, команду LATENCY LATEST було розширено новими показниками, які забезпечують кращу видимість записаних затримок у піку та обсягу.

Нові функції, модулі та підтримка

Валкі тепер дозволяє виконати операцію SET IFEQ, який обумовлює запис ключа до поточного значення. Також Представлено модульну підтримку механізмів сценаріїв, що відкриває можливість використання альтернативних для Lua мов через власні модулі.

У цій версії також дебют кількох модулів:

  • Модуль пошуку (Google): Пошукова система векторної подібності, ідеальна для випадків машинного навчання, які потребують низької затримки та високої пропускної здатності.
  • Модуль JSON (AWS): дозволяє безпосередньо маніпулювати фрагментами документа JSON, уникаючи повної обробки вмісту на клієнті.
  • Модуль фільтра Bloom (AWS): Реалізація фільтрів Блума, корисних для визначення можливої ​​приналежності елемента до набору з імовірнісною ефективністю

Нарешті, якщо ви зацікавлені в тому, щоб дізнатися більше про це, ви можете ознайомитися з деталями в наступне посилання.