Opublikowano wydanie bazy danych Redis 8.2, która należy do klasy systemów NoSQL. Redis zapewnia funkcje przechowywania danych w formacie klucz/wartość, rozszerzone o wsparcie strukturalnych formatów danych, takich jak listy, hasze i zbiory, a także umożliwia wykonywanie skryptów obsługujących w języku Lua po stronie serwera. Kod projektu został napisany w języku C i jest udostępniany na licencji AGPLv3.
System zarządzania bazą danych Redis wspiera transakcje, które pozwalają na wykonanie grupy komend w jednym kroku, gwarantując spójność i kolejność (komendy z innych zapytań nie mogą wtrącać się w) wykonanie danego zestawu komend, a w przypadku problemów umożliwiają odwrócenie zmian. Wszystkie dane w całości są buforowane w pamięci operacyjnej. Biblioteki klienckie są dostępne dla większości popularnych języków, w tym Perl, Python, PHP, Java, Ruby i Tcl.
Do zarządzania danymi udostępniane są takie polecenia jak inkrementacja/dekrementacja, standardowe operacje na listach i zbiorach (łączenie, przecięcie), zmiana nazw kluczy, wielokrotne wybory i funkcje sortowania. Obsługiwane są dwa tryby przechowywania: okresowa synchronizacja danych na dysk oraz prowadzenie logu zmian na dysku. W drugim przypadku gwarantowane jest pełne zachowanie wszystkich zmian. Możliwa jest organizacja replikacji danych w trybie master-slave, serwerówrealizowana w trybie nieblokującym. Dostępny jest także tryb wymiany wiadomości "publikacja/subskrypcja", w którym tworzony jest kanał, a wiadomości z niego są przekazywane klientom według subskrypcji.
Kluczowe zmiany w Redis 8.2:
- Zoptymalizowano ponad 70 poleceń, które zaczęły działać szybciej niż w Redis 8.0. Na przykład polecenie BITCOUNT stało się szybsze o 35%, a polecenia do operacji na listach LINSERT, LREM i LPOS — szybsze o 25%. 17 z zoptymalizowanych poleceń przyspieszyło co najmniej o 5%, a 52 — co najmniej o 2%.

- Przeprowadzono optymalizacje kodu do obsługi równoległych operacji oraz wielowątkowego wejścia/wyjścia, co pozwoliło zwiększyć liczbę przetwarzanych operacji na sekundę o 49% w testach z 8 wątkami wejścia/wyjścia przy rozkładzie obciążenia na 20% zapytań do zapisu i 80% do odczytu. Na jednym serwerze udało się przekroczyć granicę 1 miliona przetwarzanych operacji na sekundę.

- Fundamentalnie zmieniono metodę przechowywania danych w formacie klucz/wartość — do przechowywania używana jest teraz zunifikowana struktura kvobj, która pozwala pakować nazwę klucza, krótką wartość i czas życia w jednym bloku pamięci, eliminując potrzebę oddzielnych odniesień do kluczy, danych i TTL. Przy przechowywaniu krótkich wartości tekstowych nowa metoda przechowywania pozwoliła zmniejszyć zużycie pamięci o 25-37%.

- Zoptymalizowano przechowywanie danych w formacie JSON, co pozwoliło zmniejszyć zużycie pamięci o 25-67% przy przechowywaniu liczb całkowitych i liczb zmiennoprzecinkowych.
- Do mechanizmu Streams, stosowanego do przetwarzania i przechowywania strumieni wiadomości, dodano nowe polecenia XACKDEL i XDELEX, które upraszczają pracę z strumieniami, do których podłączonych jest kilku odbiorców (grupy konsumentów). Polecenia rozwiązują problem usuwania wiadomości tylko po potwierdzeniu jej odbioru przez wszystkich przetwórców.
- Do polecenia BITOP, przeznaczonego do wykonywania operacji bitowych, dodano nowe operatory logiczne DIFF, DIFF1, ANDOR i ONE.
- Dodano nowy typ indeksów wektorowych SVS-VAMANA, wspierający kompresję wektorów.
- Dodano nowe metryki: obciążenie w podziale na poszczególne sloty oraz rozkład rozmiarów kluczy dla podstawowych typów danych.
Źródło: opennet.ru



