wydanie bazy danych , związanej z systemami klasy NoSQL. Redis oferuje funkcje przechowywania danych w formacie klucz/wartość podobne do Memcached, wzbogacone o wsparcie dla strukturalnych formatów danych, takich jak listy, hasze i zbiory, a także możliwość wykonywania skryptów obsługujących w języku Lua po stronie serwera. Kod projektu na licencji BSD. Dodatkowe moduły, które oferują rozwinięte możliwości dla użytkowników korporacyjnych, takie jak RediSearch, RedisGraph, RedisJSON, RedisML, RedisBloom, od zeszłego roku na licencji proprietarnej RSAL. Rozwój otwartych wersji tych modułów na licencji AGPLv3 kontynuuje projekt .
W przeciwieństwie do Memcached, Redis zapewnia trwałe przechowywanie danych na dysku i gwarantuje integralność bazy danych w przypadku awaryjnego zakończenia pracy. Kody źródłowe projektu są udostępniane na licencji BSD. Biblioteki klienckie są dostępne dla większości popularnych języków, w tym Perl, Python, PHP, Java, Ruby i Tcl. Redis wspiera transakcje, które pozwalają wykonać grupę poleceń w jednym kroku, gwarantując spójność i sekwencję (polecenia z innych zapytań nie mogą się wtrącać) wykonywania określonego zestawu poleceń, a w przypadku problemów umożliwiając wycofanie zmian. Wszystkie dane są w pełni buforowane w pamięci operacyjnej.
Do zarządzania danymi dostępne 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 dziennika zmian na dysku. W drugim przypadku gwarantowana jest pełna integralność wszystkich zmian. Możliwe jest zorganizowanie replikacji danych w trybie master-slave na kilka serwerów, realizowane w trybie nieblokującym. Dostępny jest również tryb wymiany wiadomości „publikacja/subskrypcja”, w ramach którego tworzony jest kanał, z którego wiadomości są rozsyłane do klientów w ramach subskrypcji.
Kluczowe , dodane w Redis 6.0:
- Domyślnie proponowany jest nowy protokół RESP3, jednak nawiązanie połączenia rozpoczyna się w trybie RESP2, a klient przełącza się na nowy protokół tylko wtedy, gdy podczas negocjacji połączenia użyto nowej komendy HELLO. RESP3 umożliwia bezpośrednie zwracanie złożonych typów danych bez konieczności konwertowania ogólnych tablic po stronie klienta oraz rozdzielania zwracanych typów.
- Wsparcie dla list kontroli dostępu (), które pozwalają precyzyjnie określić, jakie operacje klient może wykonywać, a jakie nie. ACL umożliwiają także zabezpieczenie przed możliwymi błędami w trakcie programowania; na przykład, obsługiwaniu, które wykonuje tylko operację BRPOPLPUSH, można zabronić wykonywania innych operacji. W przypadku, gdy w produkcyjnym kodzie przypadkowo zapomniana zostanie dodana w trakcie debugowania komenda FLUSHALL, nie spowoduje to problemów. Implementacja ACL nie wiąże się z dodatkowymi kosztami i praktycznie nie wpływa na wydajność. Dla ACL przygotowane są również moduły interfejsowe, umożliwiające tworzenie własnych metod uwierzytelniania. W celu przeglądania wszystkich zapisanych naruszeń ACL dostępna jest komenda „ACL LOG”. Aby generować losowe klucze sesyjne, dodano komendę „ACL GENPASS”, która wykorzystuje HMAC oparty na SHA256.
- Wsparcie do szyfrowania kanału komunikacyjnego między klientem a serwerem.
- buforowania danych po stronie klienta. Dla synchronizacji bufora po stronie klienta z stanem bazy danych dostępne są dwa tryby: 1. Zapamiętywanie na serwerze kluczy, które wcześniej żądał klient, aby informować go o utracie aktualności wpisu w buforze klienta. 2. Mechanizm „broadcasting”, w którym klient subskrybuje określone prefiksy kluczy, a serwer powiadamia go o zmianach w kluczach mieszczących się w tych prefiksach. Zaletą trybu „broadcasting” jest to, że na serwerze nie marnuje się dodatkowa pamięć na przechowywanie mapy wartości buforowanych po stronie klienta, a wadą jest zwiększona liczba przesyłanych wiadomości.
- Broker wiadomości Disque, który umożliwia użycie Redis do przetwarzania kolejek wiadomości, został wyodrębniony z podstawowego zestawu w .
- Dodano , proxy dla klastra serwerów Redis, który pozwala na organizację pracy klienta z wieloma serwerami Redis jako z jednym egzemplarzem. Proxy może kierować zapytania do węzłów z wymaganymi danymi, multiplikować połączenia, rekonfigurować klaster w przypadku wykrycia awarii węzłów, wykonywać zapytania obejmujące kilka węzłów.
- Zdecydowanie poprawiono API do pisania modułów, które w zasadzie przekształciło Redis w framework umożliwiający tworzenie systemów w postaci modułów-nadbudów.
- Wprowadzono tryb replikacji, w którym pliki RDB są natychmiast usuwane po ich użyciu.
- Udoskonalono protokół replikacji PSYNC2, co umożliwiło częstsze wykonywanie częściowej resynchonizacji, zwiększając szanse na wykrycie odchylenia wspólnego dla repliki i mastera.
- Przyspieszono ładowanie plików RDB. W zależności od zawartości pliku przyspieszenie wynosi od 20 do 30%. Zdecydowanie przyspieszono wykonanie polecenia INFO przy dużej liczbie podłączonych klientów.
- Dodano nowe polecenie STRALGO z realizacją złożonych algorytmów przetwarzania ciągów. Na chwilę obecną dostępny jest tylko jeden algorytm LCS (najdłuższy wspólny podciąg), który może być przydatny przy porównywaniu sekwencji RNA i DNA.
Źródło: opennet.ru
