Społeczność Valkey ogłosiło wydanie Valkey 9.1 — nowej stabilnej wersji wydajnej bazy danych typu „klucz-wartość” z otwartym kodem źródłowym (licencja BSD), która wspiera różne scenariusze użycia, takie jak buforowanie i kolejki wiadomości, a także może działać jako główna baza danych. Projekt jest wspierany przez Linux Foundation, co zapewnia jego stałą dostępność w postaci otwartego kodu źródłowego.
Projekt jest fork'iem Redis i został stworzony po zmianach w jego licencjonowaniu.
To wydanie zawiera nowe funkcje, ulepszenia w zakresie bezpieczeństwa, monitorowania, wydajności i efektywności narzędzi. W przygotowaniu wersji wzięło udział ponad 80 osób.
Główne zmiany
Lua została wydzielona do osobnego modułu.
W Valkey 9.1 silnik skryptów Lua został oddzielony od głównego serwera i przeniesiony do samodzielnego modułu. Taki podział zmniejsza powierzchnię ataku jądra Valkey i daje administratorom możliwość całkowitego wyłączenia Lua, jeśli skrypty oparte na nim nie są używane. Aby ułatwić zrozumienie, które silniki skryptów są załadowane w systemie, komenda INFO otrzymała nową sekcję w odpowiedzi — Silniki skryptów.Nowe poprawki bezpieczeństwa.
Do stabilnego wydania 9.1.0 włączono poprawki trzech luk: use-after-free w mechanizmie odblokowywania klienta, nieprawidłowy dostęp do pamięci w komendzie 7RESTORE, a także use-after-free podczas pełnej synchronizacji w trakcie wykonywania kodu Lua/funkcji z przekazaniem wykonywania. W notatkach wymienione są jako CVE-2026-23479, CVE-2026-25243 i CVE-2026-23631.ACL na poziomie bazy danych.
Dodano system kontroli dostępu na poziomie poszczególnych baz danych. Pozwala to na dokładniejsze rozdzielenie praw w konfiguracjach wieloosobowych i nie ogranicza się jedynie do globalnych zasad dostępu na poziomie całego instancji Valkey.Automatyczne przeładowanie certyfikatów TLS.
Valkey 9.1 zyskał wsparcie dla automatycznego przeładowania certyfikatów TLS. Dla administratorów oznacza to mniej ręcznych operacji podczas rotacji certyfikatów i łatwiejszą obsługę zabezpieczonych instalacji.Nowa komenda HGETDEL.
Zespół atomowo pobiera i usuwa jedno lub kilka pól z struktury hash. Praktyczne znaczenie — scenariusze, przypominające kolejkę lub jednorazowe zużycie danych, w których wcześniej należało łączyć HGET i HDEL przez transakcję.Nowa komenda MSETEX.
MSETEX pozwala ustawić kilka kluczy z wspólnym czasem życia w jednej komendzie. Wcześniej w takim scenariuszu wymagane byłyby liczne wywołania SETEX lub połączenie SET i EXPIRE przez pipeline. Nowa komenda zmniejsza liczbę wywołań i upraszcza typowy kod dla danych sesyjnych i tymczasowych.Nowa komenda CLUSTERSCAN.
W klastrach pojawiła się jedna komenda do skanowania kluczy we wszystkich węzłach. Wcześniej klienci musieli samodzielnie wykonywać SCAN na każdym węźle i łączyć wyniki. CLUSTERSCAN upraszcza biblioteki klienckie, narzędzia administracyjne oraz operacje takie jak wyszukiwanie kluczy według wzoru lub typu w całym klastrze.Optymalizacja zużycia pamięci przez ciągi.
Dzięki wewnętrznym optymalizacjom wskaźników dla ciągów krótszych niż 128 bajtów ogłoszono zmniejszenie zużycia pamięci o 20%. Jest to szczególnie istotne dla typowych obciążeń pamięci podręcznej, gdzie przechowywana jest duża liczba małych wartości.Mniej pamięci dla posortowanych zbiorów.
Optymalizacje struktur skiplist zmniejszają zużycie pamięci dla posortowanych zbiorów o 10%. Dodatkowo przyspieszone zostały operacje na posortowanych zbiorach, w tym zapytania takie jak ZRANGEBYSCORE i ZRANGEBYLEX.Przyspieszona praca z rehashingiem.
Wewnętrzne przekształcenie tablic hash, które często występuje przy wzroście keyspace, zostało zoptymalizowane w celu zredukowania opóźnień. W notatkach o wydaniu wspomniano również o zmniejszeniu szczytów opóźnień dzięki inkrementalnemu zwalnianiu stron.Ulepszony model wątkowania I/O.
W wersji z kandydatem 9.1.0-rc2 opracowano na nowo model interakcji wątków wejścia-wyjścia z wykorzystaniem kolejek bezblokujących. W notatkach wskazano na zwiększenie przepustowości o 8–17%.Przyspieszenie GET i SET.
Valkey teraz domyślnie używa zegarów sprzętowych tam, gdzie to możliwe, co zmniejsza obciążenie systemowymi wywołaniami związanymi z czasem. Projekt ogłasza wzrost wydajności GET i SET o 3% ogółem.Szybsze masowe usuwanie.
Podczas operacji takich jak SREM, ZREM i HDEL Valkey tymczasowo wstrzymuje wewnętrzną zmianę rozmiaru tabeli hash, aby uniknąć zbędnego rehashingu i przyspieszyć masowe usuwanie elementów.Bardziej efektywne tworzenie replik przy AOF.
Podczas tworzenia repliki z włączonym AOF ponownie wykorzystuje plik RDB, który został otrzymany, zamiast generować nowy zrzut do początkowego pliku AOF. To powinno zmniejszyć nadmierne obciążenie podczas uruchamiania replik.Ulepszenia valkey-cli i valkey-benchmark.
W valkey-cli dodano wsparcie dla migracji atomowych slotów przez parametr —cluster-use-atomic-slot-migration dla operacji —cluster rebalance i —cluster reshard. W valkey-benchmark dodano możliwość wyświetlania rozkładu RPS oraz parametry —warmup i —duration, co czyni testowanie wydajności bardziej kontrolowanym.
Oddzielnie, razem z Valkey 9.1 w ekosystemie są promowane powiązane projekty: Valkey Admin do zarządzania klastrami w trybie wizualnym, Valkey Search 1.2 z wyszukiwaniem pełnotekstowym, filtrami numerycznymi, tagami oraz wyszukiwaniem wektorowym, a także biblioteka klienta Valkey GLIDE.
Valkey 9.1 to znacząca aktualizacja pod względem eksploatacji: mniej pamięci na typowych strukturach, mniejsze opóźnienia podczas wewnętrznych przebudów, nowe polecenia dla klastrów i danych czasowych, a także bardziej precyzyjny model bezpieczeństwa dla instalacji produkcyjnych.
Źródło: linux.org.ru
