Valkey 9.1

Społeczność Valkey ogłosiło wydanie Valkey 9.1 — nowej stabilnej wersji wydajnego systemu przechowywania danych typu „klucz-wartość” z otwartym kodem źródłowym (licencja BSD), który obsługuje różne scenariusze użytkowania, takie jak caching i kolejki wiadomości, a także może pełnić rolę głównej bazy danych. Projekt jest wspierany przez Linux Foundation, co gwarantuje jego stałą dostępność w postaci otwartego kodu źródłowego.


Projekt jest forkiem Redis i został stworzony po zmianach w jego licencjonowaniu.

Ta wersja zawiera nowe funkcje, ulepszenia w zakresie bezpieczeństwa, monitorowania, wydajności i efektywności narzędzi. Przy przygotowaniu wydania brało udział ponad 80 osób.

Najważniejsze zmiany

  • Lua zostało wydzielone do osobnego modułu.
    W Valkey 9.1 silnik skryptów Lua został oddzielony od głównego serwera i przeniesiony do niezależnego modułu. To rozdzielenie zmniejsza powierzchnię ataku rdzenia Valkey i umożliwia administratorom całkowite wyłączenie Lua, jeśli skrypty nie są używane. Aby łatwiej zrozumieć, które silniki skryptów są załadowane w systemie, polecenie INFO otrzymało nową sekcję odpowiedzi — Silniki skryptów.

  • Nowe poprawki zabezpieczeń.
    W stabilnym wydaniu 9.1.0 zawarto poprawki trzech podatności: use-after-free w mechanizmie odblokowywania klienta, nieprawidłowego dostępu do pamięci w poleceniu 7RESTORE, a także use-after-free podczas pełnej synchronizacji w trakcie wykonywania kodu Lua/function z ustępstwem wykonania. W notatkach są one oznaczone jako CVE-2026-23479, CVE-2026-25243 i CVE-2026-23631.

  • Kontrola dostępu na poziomie bazy danych.
    Dodano system kontroli dostępu na poziomie poszczególnych baz danych. Umożliwia to dokładniejsze rozdzielenie uprawnień w konfiguracjach wieloużytkownikowych i unikanie ograniczeń tylko do globalnych zasad dostępu na poziomie całego egzemplarza Valkey.

  • Automatyczne ponowne uruchamianie certyfikatów TLS.
    Valkey 9.1 wprowadza wsparcie dla automatycznego ponownego uruchamiania certyfikatów TLS. Dla administratorów oznacza to mniej ręcznych operacji podczas rotacji certyfikatów i bardziej wygodną obsługę zabezpieczonych instalacji.

  • Nowa komenda HGETDEL.
    Komenda atomowo pobiera i usuwa jedno lub więcej pól z struktury hash. Ma to praktyczne zastosowanie w scenariuszach przypominających kolejki lub jednorazowe wykorzystanie danych, gdzie wcześniej konieczne było łączenie HGET i HDEL przez transakcję.

  • Nowa komenda MSETEX.
    MSETEX pozwala na jednoczesne ustawienie kilku kluczy z wspólnym czasem życia. Wcześniej do takiego scenariusza potrzebne byłyby wielokrotne wywołania SETEX lub powiązanie SET i EXPIRE przez pipeline. Nowa komenda zmniejsza liczbę wywołań i upraszcza typowy kod dla danych sesyjnych i czasowych.

  • Nowa komenda CLUSTERSCAN.
    W klastrach utworzono zespół odpowiedzialny za skanowanie kluczy we wszystkich węzłach. Wcześniej klienci musieli samodzielnie przeprowadzać SCAN na każdym węźle i łączyć wyniki. CLUSTERSCAN upraszcza biblioteki klienckie, narzędzia administracyjne oraz zadania eksploatacyjne, takie jak wyszukiwanie kluczy według wzoru lub typu w całym klastrze.

  • Optymalizacja zużycia pamięci przez ciągi znaków.
    Dzięki wewnętrznym optymalizacjom wskaźników dla ciągów krótszych niż 128 bajtów ogłoszono redukcję zużycia pamięci o 20%. Jest to szczególnie istotne dla typowych obciążeń cache'ujących, gdzie przechowywana jest duża liczba małych wartości.

  • Mniejsze zużycie pamięci dla sorted sets.
    Optymalizacje struktur skiplist zmniejszają zużycie pamięci dla sorted set o 10%. Dodatkowo przyspieszone zostały operacje na uporządkowanych zbiorach, w tym zapytania takie jak ZRANGEBYSCORE i ZRANGEBYLEX.

  • Przyspieszona praca z rehashingiem.
    We wnętrzu przemyślano rozkład tablic haszujących, co często ma miejsce przy wzroście keyspace, w celu zmniejszenia opóźnień. W notatkach wydania wspomniano także o zmniejszeniu skoków opóźnienia dzięki inkrementalnemu wydaniu stron.

  • Udoskonalony model wątkowania I/O.
    W wersji kandydującej 9.1.0-rc2 poprawiono model interakcji strumieni wejścia-wyjścia, wykorzystując kolejki bez blokad. Notatki wskazują na zwiększenie przepustowości o 8–17%.

  • Przyspieszenie operacji GET i SET.
    Valkey teraz domyślnie korzysta z zegarów sprzętowych, gdzie to możliwe, co zmniejsza obciążenia związane z systemowymi wywołaniami czasowymi. Projekt twierdzi, że poprawa wydajności GET i SET wynosi do 3% w całości.

  • Szybsze masowe usuwanie.
    Podczas operacji takich jak SREM, ZREM i HDEL, Valkey teraz tymczasowo wstrzymuje wewnętrzną zmianę rozmiarów tabeli mieszającej, aby uniknąć zbędnego ponownego haszowania i przyspieszyć masowe usuwanie elementów.

  • Bardziej efektywne tworzenie replik przy AOF.
    Podczas tworzenia repliki z włączonym AOF, używany jest teraz otrzymany plik RDB zamiast generowania nowego migawki dla początkowego pliku AOF. To powinno zmniejszyć zbędne obciążenie podczas wdrażania replik.

  • Ulepszenia valkey-cli i valkey-benchmark.
    W valkey-cli dodano wsparcie dla migracji slotów atomowych poprzez parametr —cluster-use-atomic-slot-migration w operacjach —cluster rebalance i —cluster reshard. W valkey-benchmark dodano wyjście dotyczące rozkładu RPS, a także parametry —warmup i —duration, co umożliwia bardziej kontrolowane testowanie wydajności.

Osobno, wraz z Valkey 9.1 w ekosystemie promowane są powiązane projekty: Valkey Admin do wizualnego zarządzania klastrami, Valkey Search 1.2 z wyszukiwaniem pełnotekstowym, filtrami numerycznymi, tagami oraz wyszukiwaniem wektorowym, a także biblioteka kliencka Valkey GLIDE.

Valkey 9.1 to znaczna aktualizacja z punktu widzenia eksploatacji: mniej pamięci w typowych strukturach, mniejsze opóźnienia przy wewnętrznych przebudowach, nowe polecenia dla klastrów i danych czasowych, a także bardziej staranna model zabezpieczeń dla instalacji produkcyjnych.

Źródło: linux.org.ru

Kup niezawodny hosting dla stron z ochroną przed DDoS, VPS VDS serwery 🔥 Kup niezawodny hosting dla stron z ochroną przed DDoS, VPS VDS serwery | ProHoster