Das Projekt Redis hat zur Nutzung einer offenen Lizenz zurückgekehrt. Redis 8.0 wurde vorgestellt.

Das Unternehmen Redis Ltd hat eine Änderung der Lizenzpolitik für das Projekt bekannt gegeben. Mit der Veröffentlichung von Redis 8.0 wurde der Code des Projekts unter der freien Lizenz AGPLv3 verfügbar gemacht. Der Wechsel zu einer offenen Lizenz war möglich durch die Rückkehr von Salvatore Sanfilippo, dem Schöpfer der Redis-Datenbank, zu dem Unternehmen. Nach seinem Weggang von Redis Ltd hatte Salvatore ein Set von Vektorerweiterungen (Vector Sets) entwickelt, das er in Redis integrieren wollte. Dabei wünschte er, dass der von ihm geschriebene Code unter einer offenen Lizenz bereitgestellt wird. Salvatore konnte seine Kollegen vom Nutzen der Wiederherstellung der Offenheit des Projekts und einer verbesserten Interaktion mit der Community überzeugen.

Rowan Trollope, der Geschäftsführer von Redis Ltd, erklärte, dass der im vergangenen Jahr vollzogene Wechsel zu proprietären Lizenzen sein Ziel erreicht habe, da die Unternehmen AWS und Google einen Fork gegründet, begonnen haben, an der gemeinsamen Entwicklung teilzunehmen und ihre bisherigen Arbeiten zu teilen. Gleichzeitig hat der Lizenzwechsel die Beziehungen zur Community belastet, die das Unternehmen nun wiederherzustellen versucht, indem es zur Bereitstellung des Codes unter einer freien Lizenz zurückkehrt.

Nach der Einführung von proprietären Lizenzen wurde die Entwicklung der Open-Source-Codebasis von Redis in den Forks Valkey (ein Fork, der mit Unterstützung von Amazon, Google, Oracle, Ericsson und Snap entwickelt wird), Redict (ein Fork des Autors der Benutzeroberfläche Sway und der Programmiersprache Hare), Garnet (eine von Microsoft entwickelte Datenbank, die mit Redis kompatibel ist) und KeyDB (ein leistungsstarker Fork von Redis 5 von Snapchat) fortgesetzt. In den Repositories der Distributoren Debian 13, Ubuntu 24.10, Fedora 41, RHEL 10, Azure Linux 3, Arch Linux und Alpine 3.20 wurde das Redis-Paket durch den Fork Valkey ersetzt.

Ursprünglich wurde Redis unter der permissiven BSD-Lizenz angeboten, die keine Offenlegung von Änderungen erforderte. Später wechselte es zu proprietären Lizenzen, nämlich RSALv2 (Redis Source Available License v2) und SSPLv1 (Server Side Public License v1). Ab Redis 8 ist der Code des Projekts unter der AGPLv3-Lizenz verfügbar, die besondere Anforderungen für Anwendungen stellt, die Netzwerkinfrastrukturen unterstützen. Bei der Nutzung von AGPL-komponenten in Netzwerkdiensten ist der Entwickler verpflichtet, dem Nutzer den Quellcode aller Änderungen an diesen Komponenten zur Verfügung zu stellen, selbst wenn die zugrunde liegende Software nicht verteilt wird und ausschließlich für interne Infrastrukturen verwendet wird. Die AGPLv3-Lizenz ist mit der GPLv3 kompatibel, steht jedoch im Konflikt mit der GPLv2-Lizenz.

Die zuvor verwendeten Lizenzen SSPL und RSAL führten zu Diskriminierung bestimmter Nutzergruppen, wodurch sie nicht als offen oder frei betrachtet werden konnten. Beide Lizenzen verfolgen ähnliche Ziele, die Unterschiede liegen darin, dass die SSPL-Lizenz auf der Copyleft-Lizenz AGPLv3 basiert, während die RSAL-Lizenz auf der permissiven BSD-Lizenz basiert. Die RSAL-Lizenz erlaubt die Nutzung, Änderung, Verbreitung und Integration des Codes in Anwendungen, es sei denn, diese Anwendungen sind kommerziell oder werden zur Bereitstellung verwalteter kostenpflichtiger Dienste verwendet. Die SSPL-Lizenz enthält zusätzlich die Anforderung, dass nicht nur der Code der Anwendung selbst, sondern auch der Quellcode aller Komponenten, die an der Bereitstellung des Cloud-Services beteiligt sind, unter derselben Lizenz geliefert werden muss.

Gleichzeitig mit der Bekanntgabe der Lizenzänderung wurde die Version Redis 8.0 veröffentlicht. Allerdings ist im Repository bisher nur ein Release-Kandidat verfügbar, und der Download-Link für Redis 8.0 auf der Projekt-Website führt zu einer Seite mit allgemeinen Informationen zum Installationsprozess. Im Release-Hinweis wurde ebenfalls bisher nur die Version 8.0-RC1 erwähnt.

Die wichtigsten Änderungen in Redis 8.0:

  • Ein neuer Typ zur Speicherung von Vektordatenmengen wurde hinzugefügt, der in Systemen des maschinellen Lernens und der semantischen Suche gefragt ist. Vektorensätze erweitern die zuvor verfügbare Funktionalität von sortierten Mengen (sorted set) um die Möglichkeit, mehrdimensionale Vektoren zu speichern. 11 neue Befehle wie VADD, VREM und VSIM wurden zur Manipulation von Vektordaten hinzugefügt.
  • Die Module Redis Query Engine, JSON, Time Series und Probabilistic Data Types wurden in den Kern von Redis übertragen, die zuvor als separate Erweiterungen von Redis Stack bereitgestellt wurden.
  • Integrierte Unterstützung für JSON-Datenstrukturen, die es ermöglicht, Dokumente im JSON-Format nach Schlüsseln in Redis zu speichern. Für die gezielte Abfrage von JSON-Dokumenten und den Zugriff auf einzelne Elemente kann die JSONPath-Abfragesprache verwendet werden. Es gibt Unterstützung für atomare Aktualisierungen, die Änderungen an einzelnen Feldern eines JSON-Dokuments ermöglichen, ohne das gesamte Dokument zu laden.
  • Unterstützung für Datenstrukturen in Form von Zeitserien hinzugefügt (ein Datensatz bildet die Zeit und einen Satz entsprechender Werte zu diesem Zeitpunkt, z. B. durch periodische Abfragen von Sensordaten oder das Sammeln von Metriken). Um den Speicherverbrauch zu reduzieren, werden Komprimierungsalgorithmen für diese Daten eingesetzt, und es gibt die Möglichkeit, Regeln für das Herunterproben von Archivdaten (Downsampling) festzulegen.
  • Wahrscheinlichkeitsdatenstrukturen wurden hinzugefügt: Bloom-Filter, Cuckoo-Filter, Count-min-Sketch, Top-k und t-digest, die es ermöglichen, die Speichergröße erheblich zu verringern, wenn sehr große Datenmengen aufgrund von Genauigkeitsverlust bei bestimmten Operationen gespeichert werden müssen. Bloom-Filter und Cuckoo-Filter ermöglichen die Überprüfung der Mitgliedschaft in einer Menge, wobei falsche negative Ergebnisse für nicht vorhandene Elemente zugelassen, aber das Übersehen vorhandener Elemente ausgeschlossen wird. Count-min-Sketch schätzt die Anzahl der Nennungen eines Wertes in der Menge. Top-k ermöglicht das Finden der am häufigsten vorkommenden Werte. t-digest ermöglicht das Durchführen von Stichproben von Werten, die größer oder kleiner als ein festgelegter Wert sind.
  • Der "Redis Query Engine" wurde integriert, welcher Vektorsuche unterstützt und Möglichkeiten für die Erstellung von Abfragen basierend auf Inhalten und nicht auf Schlüsseln bietet. Der Redis Query Engine ermöglicht das Erstellen zusätzlicher Indizes für Daten, die in Hashes und JSON-Dokumenten gespeichert sind.
  • Die Unterstützung von ACL (Access Control Lists) wurde erweitert, um den Zugriff auf Daten auf der Grundlage von Schlüsseln zu verwalten. Dies ermöglicht die Definition verschiedener Zugriffssätze für Kommandos mit der Möglichkeit, Berechtigungsgruppen jedem Benutzer zuzuweisen. Zum Beispiel kann über ACL festgelegt werden, welche Benutzer sich mit Redis verbinden können, auf welche Schlüssel ein Benutzer Zugriff hat und welche Kommandos er ausführen kann. In Redis 8 wurden neue Kategorien von ACL für neue Datenstrukturen hinzugefügt.
  • Neue Befehle zur Arbeit mit Hashes wurden hinzugefügt:
    • HGETDEL — gibt Felder eines Hashes für den angegebenen Schlüssel aus und entfernt sie.
    • HGETEX — gibt Felder eines Hashes für den angegebenen Schlüssel aus und legt eine Lebenszeit für diese fest.
    • HSETEX — setzt Felder eines Hashes für den angegebenen Schlüssel und legt eine Lebenszeit für diese fest.
  • Es wurden über 30 Leistungsoptimierungen vorgenommen, die in einigen Tests zu einer Beschleunigung der Befehlsausführung um 87 %, einer Erhöhung der Bandbreite um 112 %, einer Beschleunigung der Replikation um 18 % und einer bis zu 16-fachen Beschleunigung der Abfragen im Redis Query Engine (durch horizontale und vertikale Skalierung) führten. Bei der Durchführung eines Testsatzes von 149 Tests wurden 90 Befehle schneller ausgeführt. Die Bandbreite hat sich deutlich erhöht, dank der Umstellung auf Multithreading für die Analyse von Befehlen, die Verarbeitung von Kundenanfragen sowie das Lesen und Schreiben in Netzwerk-Sockets. Ein neuer Implementierungsmechanismus für die multithreaded Eingabe/Ausgabe-Verarbeitung (io-threads) wurde vorgeschlagen.
  • Ein neuer Replikationsmechanismus wurde vorgestellt, der 35 % weniger Arbeitsspeicher benötigt und 18 % schneller arbeitet. Um Blockierungen zu vermeiden, werden zwei separate Replikationsströme eingesetzt – einer für die Übertragung von Änderungen zum Hauptknoten und ein anderer für die Übertragung von Änderungen zu den Zwischennodes.

Für die Verwaltung von Daten in der Redis-Datenbank-Management-System werden Befehle wie Inkrement/ Dekrement, Standardoperationen auf Listen und Mengen (Vereinigung, Schnittmenge), Umbenennung von Schlüsseln, mehrere Abfragen und Sortierfunktionen bereitgestellt. Es werden zwei Speicherungsmodi unterstützt: periodische Datensynchronisierung auf die Festplatte und das Führen eines Änderungsprotokolls auf der Festplatte. Im zweiten Fall wird die vollständige Sicherheit aller Änderungen garantiert. Transaktionen werden unterstützt, die es ermöglichen, eine Gruppe von Befehlen in einem Schritt auszuführen, wobei die Konsistenz und Reihenfolge gewährleistet ist (Befehle anderer Anfragen können sich nicht dazwischenschalten) und im Falle von Problemen die Änderungen zurückgesetzt werden können.

Es ist möglich, eine Master-Slave-Replikation von Daten auf mehrere Server, die im nicht blockierenden Modus durchgeführt wird. Es gibt auch den Nachrichtenübertragungsmodus „Veröffentlichung/Abonnement“, bei dem ein Kanal erstellt wird, dessen Nachrichten an abonnierende Kunden verteilt werden. 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, Tcl, JavaScript/Node.js, Go und C#.

Quelle: opennet.ru

Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen 🔥 Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen | ProHoster