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

60GB SSD 8Gb DDR4