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
