Release der Datenbankmanagementsysteme , die zur Klasse der NoSQL-Systeme gehört. Redis bietet Funktionen zur Datenspeicherung im Schlüssel-Wert-Format ähnlich wie Memcached, erweitert durch die Unterstützung strukturierter Datenformate wie Listen, Hashes und Mengen sowie die Möglichkeit, serverseitige Skripte mit Lua auszuführen. Der Code des Projekts steht unter der BSD-Lizenz. Zusätzliche Module, die erweiterte Funktionen für Unternehmensbenutzer bieten, wie RediSearch, RedisGraph, RedisJSON, RedisML, RedisBloom, werden seit letztem Jahr unter der proprietären RSAL-Lizenz entwickelt. Die Entwicklung offener Varianten dieser Module unter der AGPLv3-Lizenz wird von dem Projekt .
Im Gegensatz zu Memcached bietet Redis eine permanente Datenspeicherung auf der Festplatte und gewährleistet die Integrität der Datenbank im Falle eines unerwarteten Abbruchs. Die Quelltexte des Projekts werden unter der BSD-Lizenz verteilt. Client-Bibliotheken sind für die meisten gängigen Programmiersprachen verfügbar, einschließlich Perl, Python, PHP, Java, Ruby und Tcl. Redis unterstützt Transaktionen, die es ermöglichen, eine Gruppe von Befehlen in einem Schritt auszuführen und somit Konsistenz und Kontinuität zu garantieren (weitere Anfragen können sich nicht zwischen die Befehle drängen). Bei Problemen besteht die Möglichkeit, Änderungen rückgängig zu machen. Alle Daten werden vollständig im Arbeitsspeicher zwischengespeichert.
Um Daten zu verwalten, stehen Befehle wie Inkrement/Dekrement, Standardoperationen auf Listen und Mengen (Vereinigung, Schnittmenge), Umbenennung von Schlüsseln, Mehrfachabfragen und Sortierfunktionen zur Verfügung. Es werden zwei Speichermodi unterstützt: die periodische Synchronisierung der Daten auf die Festplatte und die Führung eines Änderungsprotokolls auf der Festplatte. Im zweiten Fall wird die vollständige Integrität aller Änderungen gewährleistet. Es ist auch möglich, eine Master-Slave-Datenreplikation auf mehrere Server in einem nicht-blockierenden Modus durchzuführen. Zudem gibt es einen Nachrichtenübertragungsmodus „Veröffentlichung/Abonnement“, bei dem ein Kanal erstellt wird, dessen Nachrichten an abonnierte Clients verteilt werden.
Schlüssige , hinzugefügt in Redis 6.0:
- Standardmäßig wird ein neues Protokoll RESP3 angeboten, aber die Verbindung beginnt im Modus RESP2, und der Client wechselt nur auf das neue Protokoll, wenn bei der Aushandlung der Verbindung der neue Befehl HELLO verwendet wurde. RESP3 ermöglicht es, komplexe Datentypen direkt zurückzugeben, ohne dass allgemeine Arrays auf der Client-Seite konvertiert werden müssen, und trennt dabei die zurückgegebenen Typen.
- Unterstützung für Zugriffskontrolllisten (), die es ermöglichen, genau zu bestimmen, welche Operationen der Kunde durchführen kann und welche nicht. ACLs bieten zudem Schutz vor möglichen Fehlern während der Entwicklung. Beispielsweise kann einem Handler, der nur die Operation BRPOPLPUSH ausführt, verboten werden, andere Operationen durchzuführen. Sollte im Produktionscode versehentlich der Debugging-Aufruf FLUSHALL vergessen werden, führt dies nicht zu Problemen. Die Implementierung von ACL verursacht keine zusätzlichen Kosten und hat nahezu keinen Einfluss auf die Leistung. Für ACLs wurden auch Schnittstellenmodule bereitgestellt, die es ermöglichen, eigene Authentifizierungsmethoden zu erstellen. Um alle protokollierten Verstöße gegen ACLs anzuzeigen, steht der Befehl „ACL LOG“ zur Verfügung. Zur Generierung unvorhersehbarer Sitzungsschlüssel wurde der Befehl „ACL GENPASS“ hinzugefügt, der HMAC basierend auf SHA256 nutzt.
- Support zur Verschlüsselung der Kommunikationsverbindung zwischen Client und Server.
- Client-seitiges Caching. Für die Synchronisation des Client-Caches mit dem Zustand der Datenbank stehen zwei Modi zur Verfügung: 1. Speicherung der Schlüssel auf dem Server, die zuvor vom Client angefragt wurden, um ihn über die Obsoleszenz von Einträgen im Client-Cache zu informieren. 2. Ein "Broadcasting"-Mechanismus, bei dem der Client sich auf bestimmte Schlüsselpräfixe registriert und der Server ihn im Falle von Änderungen an den Schlüssel, die unter diese Präfixe fallen, benachrichtigt. Der Vorteil des "Broadcasting"-Modus besteht darin, dass beim Server kein zusätzlicher Speicher für die Speicherung der zwischengespeicherten Werte auf der Client-Seite benötigt wird, während der Nachteil in der Zunahme der übermittelten Nachrichten besteht.
- Der Nachricht broker Disque, der die Nutzung von Redis für die Verarbeitung von Nachrichtenwarteschlangen ermöglicht, wurde vom Basismodul in .
- Hinzugefügt , ein Proxy für ein Redis-Server-Cluster, der es ermöglicht, einen Client mit mehreren Redis-Servern als ein einziges Modul zu verwalten. Der Proxy kann Anfragen an Knoten mit den benötigten Daten weiterleiten, Verbindungen multiplexen, das Cluster im Falle von Knotenfehlern neu konfigurieren und Anfragen, die mehrere Knoten umfassen, ausführen.
- Die API zur Erstellung von Modulen wurde erheblich verbessert und hat Redis praktisch in ein Framework verwandelt, das die Entwicklung von modulbasierten Systemen ermöglicht.
- Ein Replikationsmodus wurde implementiert, bei dem RDB-Dateien sofort gelöscht werden, nachdem sie verwendet wurden.
- Das PSYNC2-Replikationsprotokoll wurde verbessert, was häufigere partielle Resynchronisationen ermöglicht, indem die Chancen erhöht werden, Verschiebungen zu erkennen, die sowohl für die Replik als auch für den Master gelten.
- Die Ladezeiten von RDB-Dateien wurden beschleunigt. Je nach Inhalt der Datei beträgt die Beschleunigung zwischen 20 und 30 %. Der Befehl INFO wird erheblich schneller ausgeführt, wenn eine große Anzahl von Clients verbunden ist.
- Ein neues STRALGO-Team wurde hinzugefügt, das komplexe Algorithmen zur Textverarbeitung implementiert. Momentan steht nur ein Algorithmus zur Verfügung: LCS (Longest Common Subsequence), der beim Vergleich von RNA- und DNA-Sequenzen nützlich sein kann.
Quelle: opennet.ru
