Veröffentlichung der Datenbank-Management-System Redis 8.4

Die Veröffentlichung von Redis 8.4, einem NoSQL-Datenbanksystem, ist erfolgt. Redis bietet Funktionen zur Speicherung von Daten im Schlüssel/Wert-Format, erweitert um die Unterstützung strukturierter Datenformate wie Listen, Hashes und Mengen sowie die Möglichkeit, serverseitige Skripte in der Sprache Lua auszuführen. Der Projektcode ist in C geschrieben und wird unter der Lizenz AGPLv3 verbreitet.

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 Redis 8.4:

  • Der Befehl „FT.HYBRID“ wurde hinzugefügt, der hybride Suche implementiert, die in einer Anfrage die Möglichkeiten der Volltext- und Vektorensuche kombiniert und sowohl direkte Übereinstimmungen als auch semantische Ähnlichkeiten berücksichtigt. Es werden Aggregationsmöglichkeiten mit der gleichen Syntax wie der Befehl „FT.AGGREGATE“ unterstützt.
  • Die Durchsatzleistung in typischen Redis-Anwendungen für Caching wurde erhöht. Beispielsweise ergab sich bei Lasten, die 10 % Schreiboperationen (SET) und 90 % Leseoperationen (GET) mit einer Speicherung von String-Werten mit einer Größe von 1 KB beinhalteten, eine Steigerung der Durchsatzleistung um 30 %.
    Veröffentlichung der Datenbank-Management-System Redis 8.4
  • Die Leistung der Suchoperationen (FT.SEARCH) und der Aggregation der Ergebnisse (FT.AGGREGATE) wurde erhöht. In stark belasteten Systemen mit einer großen Anzahl paralleler Anfragen wurde eine Steigerung der Durchsatzraten und eine Reduzierung der Latenzen um bis zu 4,7-fach bei der Durchführung von Suchen und um bis zu 1,4-fach bei der Aggregation der Ergebnisse beobachtet.
    Veröffentlichung der Datenbank-Management-System Redis 8.4
  • Die Speicherzuweisung bei der Ausführung von Anfragen wurde optimiert, und es wurde die Möglichkeit hinzugefügt, das Verhalten bei Erschöpfung des verfügbaren Speichers (OOM, out-of-memory) anzupassen.
  • Der Speicherverbrauch für die Speicherung kleiner Strings (bis zu 7 Byte) in JSON-Formaten wurde gesenkt. Zum Beispiel benötigt ein JSON-Array mit 500 kleinen Schlüsseln/Werten nun 37 % weniger Speicher.
  • Die Effizienz der Speicherung von numerischen JSON-Arrays wurde erhöht, deren Elemente alle denselben Typ haben (während früher für jedes Element in einem solchen Array der Typ und der Wert gespeichert wurden, wird der Typ jetzt einmal für das gesamte Array gespeichert). In einem durchgeführten Test benötigt ein solches Array mit einer Million homogener Elemente nun je nach Typ 50-92 % weniger Speicher.
  • Der SET-Befehl wurde um die Optionen IFEQ, IFNE, IFDEQ und IFDNE erweitert, die es ermöglichen, ein einziges Kommando zu verwenden, um den String-Schlüssel zu aktualisieren, wenn der zugehörige Wert seit seiner Abfrage durch einen anderen Client nicht verändert wurde.
  • Der Befehl XDELEX wurde hinzugefügt, um den String-Schlüssel atomar zu löschen, wenn der zugehörige Wert seit seiner Abfrage nicht verändert wurde.
  • Ein neuer Befehl DIGEST wurde hinzugefügt, der den Hash des Wertes zurückgibt, der mit dem angegebenen Schlüssel verknüpft ist.
  • Im Befehl XREADGROUP wurde die Option „CLAIM “ hinzugefügt, um sowohl wartende (idle pending) als auch eingehende (incoming) Nachrichten zu lesen.
  • Der Befehl MSETEX wurde hinzugefügt, um atomar mehrere String-Schlüssel gleichzeitig zu setzen oder zu aktualisieren sowie deren Lebensdauer zu verändern.
  • Ein Mechanismus zur atomaren Migration von Slots zwischen Knoten in einem Cluster (ASM – Atomic Slot Migration) wurde hinzugefügt. Dieser ähnelt der vollständigen synchronen Replikation, funktioniert jedoch auf der Ebene einzelner Datenspeicherungslots. Der Befehl CLUSTER MIGRATION wurde hinzugefügt, um Slots von anderen Knoten zu importieren, den Fortschritt der Migration zu verfolgen und gegebenenfalls ausstehende Migrationen zu markieren.
  • Der Befehl CLUSTER SLOT-STATS wurde hinzugefügt, um Statistiken im Cluster nach einzelnen Slots auszuwerten, wie z.B. die Anzahl der Schlüssel, die CPU-Auslastung und den Netzwerk-I/O.

Quelle: opennet.ru

60GB SSD 8Gb DDR4