Die Veröffentlichung von Redis 7.4, einem NoSQL-Datenbanksystem, wurde bekannt gegeben. Redis bietet Funktionen zur Speicherung von Daten im SchlĂŒssel/Wert-Format, ergĂ€nzt durch die UnterstĂŒtzung fĂŒr strukturierte Datenformate wie Listen, Hashes und Mengen, sowie die Möglichkeit, serverseitige Skripte in Lua auszufĂŒhren. Im Gegensatz zu In-Memory-Speicherlösungen wie Memcached speichert Redis Daten nicht nur im Arbeitsspeicher, sondern auch auf der Festplatte, was die IntegritĂ€t der Datenbank im Falle eines unerwarteten Absturzes gewĂ€hrleistet.
Redis 7.4 wird als erste Version mit neuen Lizenzbedingungen veröffentlicht â statt der zuvor verwendeten BSD-Lizenz ist der Code jetzt unter proprietĂ€ren Lizenzen RSALv2 (Redis Source Available License v2) und SSPLv1 (Server Side Public License v1) erhĂ€ltlich. Nutzer, die den Code weiterhin unter der BSD-Lizenz verwenden möchten, können auf die Projekte Valkey (ein Fork, der mit UnterstĂŒtzung von Amazon, Google, Oracle, Ericsson und Snap entwickelt wird), Redict (ein Fork des Entwicklers der BenutzeroberflĂ€che Sway und der Sprache Hare), Garnet (eine von Microsoft entwickelte Datenbank, die mit Redis kompatibel ist) oder KeyDB (ein leistungsstarker Fork von Redis 5 von Snapchat) zurĂŒckgreifen.
Die Lizenzen SSPL und RSAL diskriminieren bestimmte Benutzergruppen, was sie nicht als offen oder frei qualifiziert. In ihren Zielen sind beide Lizenzen Ă€hnlich, wobei der Unterschied darin besteht, dass die SSPL-Lizenz auf der Copyleft-Lizenz AGPLv3 basiert und die RSAL-Lizenz auf der permissiven BSD-Lizenz beruht. Die RSAL-Lizenz erlaubt die Nutzung, Modifizierung, Verbreitung und Integration des Codes in Anwendungen, auĂer wenn diese Anwendungen kommerziell sind oder verwendet werden, um verwaltete kostenpflichtige Dienste anzubieten. Die SSPL-Lizenz enthĂ€lt zusĂ€tzlich die Anforderung, dass nicht nur der Code der Anwendung, sondern auch der Quellcode aller Komponenten, die an der Bereitstellung des Cloud-Dienstes beteiligt sind, unter derselben Lizenz bereitgestellt werden muss.
Redis unterstĂŒtzt Transaktionen, die es ermöglichen, eine Gruppe von Befehlen in einem Schritt auszufĂŒhren und dabei Konsistenz und IntegritĂ€t zu garantieren (Befehle von anderen Anfragen können sich nicht dazwischen drĂ€ngen). Im Falle von Problemen ist es möglich, Ănderungen zurĂŒckzusetzen. Alle Daten werden vollstĂ€ndig im Arbeitsspeicher zwischengespeichert. Client-Bibliotheken sind fĂŒr die meisten gĂ€ngigen Programmiersprachen verfĂŒgbar, darunter Perl, Python, PHP, Java, Ruby und Tcl.
Zur Datenverwaltung stehen Befehle zur VerfĂŒgung, wie Inkrementierung/Dekrementierung, Standardoperationen fĂŒr Listen und Mengen (Vereinigung, Schnittmenge), Umbenennung von SchlĂŒsseln, Mehrfachauswahl und Sortierfunktionen. Es werden zwei Speicher-Modi unterstĂŒtzt: periodische Synchronisation der Daten auf die Festplatte und das FĂŒhren eines Ănderungsprotokolls auf der Festplatte. Im zweiten Fall wird die vollstĂ€ndige Erhaltung aller Ănderungen gewĂ€hrleistet. Es ist möglich, eine Master-Slave-Replikation der Daten ĂŒber mehrere Server, die im nicht-blockierenden Modus erfolgt. Auch ein âPublish/Subscribeâ-Nachrichtenmodus ist verfĂŒgbar, bei dem ein Kanal eingerichtet wird, dessen Nachrichten an abonnierende Clients verbreitet werden.
Wesentliche Ănderungen in der FunktionalitĂ€t von Redis 7.4:
- Die Möglichkeit zur Begrenzung der Lebensdauer einzelner Felder in Hashes und Strukturen zur Speicherung gruppierter DatensĂ€tze im SchlĂŒssel-Wert-Format wurde hinzugefĂŒgt. Im Gegensatz zur Festlegung einer Lebensdauer fĂŒr den SchlĂŒssel ermöglicht die vorgeschlagene Ănderung, nicht nur eine allgemeine Lebensdauer fĂŒr alle verwandten Felder festzulegen, sondern auch individuelle Lebensdauern fĂŒr bestimmte Felder, was beispielsweise zur GewĂ€hrleistung eines kĂŒrzeren Lebenszyklus von Authentifizierungstoken im Vergleich zu anderen Sitzungsdaten verwendet werden kann.
- Neue Datentypen bfloat16 und float16 wurden vorgeschlagen, die fĂŒr die Verwendung in maschinellen Lernanwendungen optimiert sind und den Speicherverbrauch im Vergleich zu den zuvor verfĂŒgbaren Datentypen float32 und float64 reduzieren. Bei Verwendung in Hashes ermöglichen die neuen Typen eine Reduzierung des Speicherverbrauchs in vektorbasierten Datenbanken um 47 %, verringern die Datenabrufverzögerung um 59 % und verkĂŒrzen die Indexerstellungszeit um 58 % im Vergleich zum Typ float64.
- Die Verwendung sekundĂ€rer Indizes wurde vereinfacht. Bei der Abfrage von Informationen aus sekundĂ€ren Indizes mĂŒssen spezielle Zeichen wie "@" und "." jetzt nicht mehr einzeln maskiert werden, sondern können mit doppelten AnfĂŒhrungszeichen umrahmt werden. Das Indizieren von leeren und fehlenden Feldern wurde ebenfalls erheblich verbessert â fĂŒr die Erstellung von Indizes und Anfragen, die das Vorhandensein von Feldern berĂŒcksichtigen, wurden das neue SchlĂŒsselwort INDEXMISSING und die Funktion ismissing() vorgeschlagen. Neue Operatoren INTERSECT und DISJOINT wurden hinzugefĂŒgt, um die Suche nach geospatialen Daten zu erleichtern. Möglichkeiten zur Analyse des Speicherverbrauchs durch den Index wurden hinzugefĂŒgt.
- Die UnterstĂŒtzung fĂŒr Filter zur Ausschluss von Elementen in hinzugefĂŒgten DatensĂ€tzen wurde hinzugefĂŒgt. Beispielsweise kann beim periodischen Laden von Sensordaten in die Datenbank ein Filter hinzugefĂŒgt werden, der Werte ignoriert, deren Zeitunterschied zum vorherigen Wert kleiner als ein bestimmter Schwellenwert ist.
- Die UnterstĂŒtzung fĂŒr Trigger und Funktionen in der Programmiersprache JavaScript, die in der vorherigen Version vorgeschlagen wurden, wurde eingestellt.
Quelle: opennet.ru
