Dieser Artikel ist ein Spiegelartikel der maschinellen Übersetzung, bitte klicken Sie hier, um zum Originalartikel zu springen.

Ansehen: 29611|Antwort: 2

[Redis] Redis verwendet Lua-Skripte für detaillierte Erklärungen

[Link kopieren]
Veröffentlicht am 30.04.2021 15:42:57 | | | |
Was Redis betrifft, so verwendet es oft jeder, und das am häufigsten verwendete Szenario ist das Daten-Caching.

Rezension

Redis-Persistenzunterschied zwischen RDB und AOF
https://www.itsvse.com/thread-9555-1-1.html

Die Docker-Installation führt den Redis-Cache aus
https://www.itsvse.com/thread-8995-1-1.html

Beispiele erklären, was Redis-Cache-Durchdringung, Cache-Lawine und Cache-Zerstörung sind
https://www.itsvse.com/thread-8968-1-1.html

Redis-Wildcards zum Löschen von Schlüsseln in großen Mengen
https://www.itsvse.com/thread-7957-1-1.html

CentOS 7 Installation Redis 5.0.3 Tutorial
https://www.itsvse.com/thread-7201-1-1.html

Installiere die Redis-Erweiterung unter PHP 5.5.7 unter CentOS
https://www.itsvse.com/thread-7200-1-1.html

Wie viele Schlüssel können in einer Redis-Instanz gespeichert werden, und was sind die maximalen Schlüssel und Werte?
https://www.itsvse.com/thread-6848-1-1.html

Die Ausgabe des Redis-Chinesischen kann nicht richtig dargestellt werden
https://www.itsvse.com/thread-5032-1-1.html

Redis ermöglicht den Fernzugriff
https://www.itsvse.com/thread-5011-1-1.html

Windows startet den Redis-Dienst nicht, Fehler 1067: Prozess beendet unerwartet.
https://www.itsvse.com/thread-5010-1-1.html

CentOS installierte Redis 4.0.8
https://www.itsvse.com/thread-4614-1-1.html

Redis richtet eine Fernverbindung ein und greift auf Passwörter zu.
https://www.itsvse.com/thread-4101-1-1.html

Redis entleert den Datencache
https://www.itsvse.com/thread-4027-1-1.html

Redis-Persistenzkonfiguration und Off-Persistenz
https://www.itsvse.com/thread-4012-1-1.html

Der Unterschied zwischen Save und BGSAVE in Redis
https://www.itsvse.com/thread-4010-1-1.html

Redis zwei Persistenzmethoden und -prinzipien
https://www.itsvse.com/thread-4009-1-1.html

Redis hat drei Wege zum Einstieg
https://www.itsvse.com/thread-4008-1-1.html

Redis-Methode zum Ausblenden von Kommandozeilenfenstern
https://www.itsvse.com/thread-2988-1-1.html

Redis-Hash-Hash-Wert-Problem
https://www.itsvse.com/thread-2587-1-1.html

5 Dinge, die Sie wissen sollten, bevor Sie Redis verwenden
https://www.itsvse.com/thread-2580-1-1.html

Redis ändert die Standardportnummer und setzt das Zugriffspasswort
https://www.itsvse.com/thread-2577-1-1.html

Redis Windows 64-Bit-Download, offizielle Downloadadresse
https://www.itsvse.com/thread-2576-1-1.html
Ab Redis 2.6.0 verfügt Redis über einen eingebauten Lua-Interpreter und bietet einen Eval-Befehl zur Analyse der Lua-Skriptbewertung.

Syntax: Eval-Skript numkeys keys args

Parameter:

eval — Redis gibt Befehle zur Analyse der Lua-Schrift

Schrift — Lua-Schrift

numkeys — Spezifiziert die Anzahl der Schlüssel im Schlüsselnamen-Parametersatz

keys — Der Schlüsselname-Parametersatz, dargestellt durch das globale Variable KEYS-Array, beginnend mit einem Index von 1

args — Eine Menge von Schlüssel-Wert-Parametern, dargestellt durch ein Array globaler Variablen ARGV, beginnend mit einem Index von 1


Vorteile der Verwendung von Lua in Redis

Reduziere den Netzwerk-Overhead. Mehrere Anfragen können gleichzeitig in Form von Skripten gesendet werden, um die Netzwerklatenz zu reduzieren
Atomare Manipulation. Redis führt das gesamte Skript als Ganzes aus, ohne dass weitere Befehle dazwischen eingefügt werden. Daher müssen sich während des Skriptprozesses keine Sorgen um Rennbedingungen und Transaktionen machen.
Wieder eingesetzt. Die vom Client gesendeten Schritte werden dauerhaft in Redis gespeichert, damit andere Clients das Skript wiederverwenden können, ohne Code verwenden zu müssen, um dieselbe Logik zu vervollständigen.

Schriftatomizität

Lua-Skripte dürfen keine zeitaufwändigen Operationen oder Deadloops haben, sonst akzeptiert Redis keine anderen Befehle und führt aus, um das Skript zu stoppen

Redis verwendet einen einzelnen Lua-Interpreter, um alle Skripte auszuführen, und stellt sicher, dass die Skripte atomar ausgeführt werden.Das bedeutet, dass während eines laufenden Skripts keine anderen Skripte oder Redis-Befehle ausgeführt werden! Daher kann der Server, wenn das aktuelle Skript langsam läuft, den Befehl möglicherweise nicht ausführen, weil er besetzt ist, zum Beispiel:

Jedes Skript hat ein maximales Ausführungszeitlimit, der Standardwert beträgt 5 Sekunden. Die maximale Ausführungszeit wird durch die lua-time-limit-Option der Konfigurationsdatei redis.conf oder direkt durch die Befehle config get und config set gesteuert. Wenn die Ausführung eines Skripts seine maximale Ausführungszeit erreicht, beendet Redis es nicht aktiv, sondern führt die folgenden Schritte durch:

(1) Redis vermerkt, dass einem Skript die Zeit davonläuft

(2) Redis beginnt, Anfragen von anderen Clients erneut zu akzeptieren, akzeptiert aber nur die Ausführung von Script-Kill-Befehlen und Shutdown-Nosave.

(3) Wenn das Skript nur Leseoperationen durchführt, verwenden Sie den Script Kill-Befehl, um das Skript sofort zu stoppen; Wenn das Skript eine Schreiboperation durchführt, darf nur der Befehl Shutdown save/nosave den Server stoppen, um zu verhindern, dass die aktuellen Daten auf die Festplatte geschrieben werden. (Zu diesem Zeitpunkt ist der Server ausgefallen und die Daten werden nicht gespeichert.)


Beispiel

Führe das Skript aus, die Parameter sind 2 Schlüssel und Wert, und der Befehl lautet wie folgt:


Bei Deadloop-Skripten führt das Ausführen des folgenden Skripts dazu, dass Redis andere Befehle nicht verarbeiten kann und stecken bleibt:

Versuchen Sie, mit einem Skript Daten der Typ-String mit folgendem Befehl hinzuzufügen:

Führe einige komplexere Skripte aus, wenn der Wert des Schlüssels gleich dem von uns übergebenen Wert ist, dann lösche den Cache, sonst machst du irgendetwas, der Befehl lautet wie folgt:

Die Ergebnisse der Umsetzung sind wie folgt:



(Ende)




Vorhergehend:.NET/C# Lock Principle Monitor bietet eine ausführliche Erklärung
Nächster:IIS DELETE PUT anforderung 405-Lösung
 Vermieter| Veröffentlicht am 10.05.2021 09:18:34 |

Der Hyperlink-Login ist sichtbar.
Der Befehl Redis Script Load wird verwendet, um ein Skriptskript zum Skriptcache hinzuzufügen, wird jedoch nicht sofort ausgeführt.

Der EVAL-Befehl fügt das Skript ebenfalls in den Skriptcache ein, bewertet aber sofort das Eingabeskript.

Befindet sich das gegebene Skript bereits im Cache, wird keine Aktion ausgeführt.

Nachdem das Skript dem Cache hinzugefügt wurde, kann es mit der SHA1-Kontrollsumme des Skripts über den EVALSHA-Befehl aufgerufen werden. (Das bedeutet auch.)Das gleiche Skript führt denselben sha1-Wert auf jedem anderen Redis-Server aus.

Skripte können unendlich lange im Cache verbleiben, bis das SCRIPT FLUSH ausgeführt wird.



 Vermieter| Veröffentlicht am 12.05.2021 11:38:55 |
Bestimmen Sie, ob das Lua-Skript im Cache ist


Nach dem Neustart von Redis wird das Lua-Skript automatisch gelöscht, wird nicht dauerhaft sein

Verzichtserklärung:
Alle von Code Farmer Network veröffentlichten Software, Programmiermaterialien oder Artikel dienen ausschließlich Lern- und Forschungszwecken; Die oben genannten Inhalte dürfen nicht für kommerzielle oder illegale Zwecke verwendet werden, andernfalls tragen die Nutzer alle Konsequenzen. Die Informationen auf dieser Seite stammen aus dem Internet, und Urheberrechtsstreitigkeiten haben nichts mit dieser Seite zu tun. Sie müssen die oben genannten Inhalte innerhalb von 24 Stunden nach dem Download vollständig von Ihrem Computer löschen. Wenn Ihnen das Programm gefällt, unterstützen Sie bitte echte Software, kaufen Sie die Registrierung und erhalten Sie bessere echte Dienstleistungen. Falls es eine Verletzung gibt, kontaktieren Sie uns bitte per E-Mail.

Mail To:help@itsvse.com