Veröffentlichung der DBMS Redis 7.0

Die Veröffentlichung von Redis 7.0, einem NoSQL-Datenbanksystem, wurde bekannt gegeben. Redis bietet Funktionen zur Speicherung von Daten im Schlüssel-Wert-Format, ergänzt durch die Unterstützung strukturierter Datenformate wie Listen, Hashes und Mengen, sowie die Möglichkeit, Server-seitige Skripte in Lua auszuführen. Der Projektcode wird unter der BSD-Lizenz bereitgestellt. Zusätzliche Module, die erweiterte Funktionen für Unternehmenskunden wie RediSearch, RedisGraph, RedisJSON, RedisML und RedisBloom bieten, werden seit 2019 unter einer proprietären RSAL-Lizenz angeboten. Das Projekt GoodFORM versuchte, die Entwicklung offener Alternativen zu diesen Modulen unter der AGPLv3-Lizenz fortzusetzen, hat sich jedoch in letzter Zeit in einer Stagnation befunden.

Im Gegensatz zu In-Memory-Speichersystemen wie Memcached bietet Redis eine persistente Datenspeicherung auf der Festplatte und garantiert die Integrität der Datenbank im Falle eines unerwarteten Systemausfalls. Die Quelltexte des Projekts werden unter der BSD-Lizenz veröffentlicht. Client-Bibliotheken sind für die meisten gängigen Programmiersprachen verfügbar, darunter Perl, Python, PHP, Java, Ruby und Tcl. Redis unterstützt Transaktionen, mit denen eine Gruppe von Befehlen in einem Schritt ausgeführt werden kann, wobei Konsistenz und Reihenfolge (Befehle von anderen Anfragen können sich nicht einmischen) gewährleistet sind und bei Problemen eine Rückgängigmachung der Änderungen ermöglicht wird. Alle Daten werden vollständig im Arbeitsspeicher zwischengespeichert.

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.

Wichtige Änderungen in Redis 7.0:

  • Unterstützung für auf dem Server ausgeführte Funktionen hinzugefügt Server. Im Gegensatz zu den zuvor unterstützten Skripten in Lua sind die Funktionen nicht an die Anwendung gebunden und zielen darauf ab, zusätzliche Logik zu implementieren, die die Funktionalität des Servers erweitert. Die Funktionen werden untrennbar mit den Daten und in Verbindung mit der Datenbank verarbeitet, anstatt an die Anwendung gebunden zu sein, und werden ebenfalls repliziert und im dauerhaften Speicher gesichert.
  • Die zweite Überarbeitung der ACL wurde vorgeschlagen, die den Datenzugriff auf der Grundlage von Schlüsseln verwaltet und verschiedene Regelsets für den Zugriff auf Befehle definiert, mit der Möglichkeit, mehrere Selektoren (Befugnisse) an jeden Benutzer zu binden. Jeder Schlüssel kann mit bestimmten Berechtigungen identifiziert werden, zum Beispiel kann der Zugriff auf eine bestimmte Untermenge von Schlüsseln nur lesend oder schreibend eingeschränkt werden.
  • Eine funktionsfähige, in einem Cluster implementierte, sharded Implementierung des Publish-Subscribe-Nachrichtensystems wurde bereitgestellt, bei der eine Nachricht an einen bestimmten Knoten gesendet wird, der mit einem Nachrichtenkanal verbunden ist, und diese Nachricht dann an die anderen Knoten innerhalb des Shards weitergeleitet wird. Clients können Nachrichten abonnieren, indem sie sich entweder mit dem Hauptknoten oder mit den sekundären Knoten des Shards verbinden. Die Verwaltung erfolgt über die Befehle SSUBSCRIBE, SUNSUBSCRIBE und SPUBLISH.
  • Die Unterstützung für die Verarbeitung von Subbefehlen in den meisten Kontexten wurde hinzugefügt.
  • Neue Befehle wurden hinzugefügt:
    • ZMPOP, BZMPOP.
    • LMPOP, BLMPOP.
    • SINTERCARD, ZINTERCARD.
    • SPUBLISH, SSUBSCRIBE, SUNSUBSCRIBE, PUBSUB SHARDCHANNELS/SHARDNUMSUB.
    • EXPIRETIME, PEXPIRETIME.
    • EVAL_RO, EVALSHA_RO, SORT_RO.
    • FUNCTION *, FCALL, FCALL_RO.
    • COMMAND DOCS, COMMAND LIST.
    • LATENCY HISTOGRAM.
    • CLUSTER SHARDS, CLUSTER LINKS, CLUSTER DELSLOTSRANGE, CLUSTER ADDSLOTSRANGE.
    • CLIENT NO-EVICT.
    • ACL DRYRUN.
  • Die Möglichkeit, mehrere Konfigurationen in einem Aufruf von CONFIG SET/GET zu verarbeiten, wurde bereitgestellt.
  • Der redis-cli wurde die Optionen "—json", "-2", "—scan", "—functions-rdb" hinzugefügt.
  • Standardmäßig haben Clients keinen Zugriff auf Einstellungen und Befehle, die die Sicherheit betreffen (zum Beispiel sind die Befehle DEBUG und MODULE deaktiviert, Änderungen an Konfigurationen mit dem PROTECTED_CONFIG-Flag sind verboten). In redis-cli wurde die Ausgabe in eine Datei mit Befehlsverlauf, die vertrauliche Daten enthält, eingestellt.
  • Es wurden umfangreiche Optimierungen vorgenommen, die auf die Leistungssteigerung und die Reduzierung des Speicherverbrauchs abzielen. Zum Beispiel wurde der Speicherverbrauch im Cluster-Modus, bei Copy-on-Write-Operationen und beim Arbeiten mit Hashes und Zsets erheblich reduziert. Die Logik zum Schreiben von Daten auf die Festplatte (Aufruf von fsync) wurde verbessert. Die Anzahl der Netzwerkpakete und Systemaufrufe beim Senden von Antworten an den Client wurde verringert. Die Effizienz der Replikation wurde erhöht.
  • Die Sicherheitsanfälligkeit CVE-2022-24735 wurde im Umfeld zur Ausführung von Lua-Skripten behoben, die die Substitution eigenen Lua-Codes ermöglicht, um ihn im Kontext eines anderen Benutzers auszuführen, einschließlich Benutzern mit höheren Berechtigungen.
  • Die Sicherheitsanfälligkeit CVE-2022-24736 wurde behoben, die dazu führen kann, dass der redis-server-Prozess aufgrund des Dereferenzierens eines Nullzeigers abstürzt. Der Angriff erfolgt durch das Laden speziell gestalteter Lua-Skripte.

Quelle: opennet.ru

Zuverlässiges Hosting für Websites mit DDoS-Schutz kaufen, VPS VDS Server 🔥 Zuverlässiges Hosting für Websites mit DDoS-Schutz kaufen, VPS VDS Server - ProHoster