Redis-Transaktion
MULTI, EXEC, DISCARD und WATCH sind die Grundlage der Redis-Transaktion. Sie werden zum expliziten Starten und Steuern einer Transaktion verwendet und ermöglichen die Ausführung einer Reihe von Befehlen in einem Schritt. Und bietet zwei wichtige Garantien:
● Alle Befehle in der Transaktion werden serialisiert und der Reihe nach ausgeführt. Während der Ausführung einer Redis-Transaktion erfolgt keine Anfrage eines anderen Clients. Dadurch wird sichergestellt, dass die Befehlswarteschlange als einzelne atomare Operation ausgeführt wird.
● Alle Befehle in der Warteschlange werden entweder verarbeitet oder ignoriert. Der EXEC-Befehl löst daher die Ausführung aller Befehle in der Transaktion aus,
● Wenn dies vor dem Aufruf des MULTI-Befehls geschieht, werden keine Befehle ausgeführt
● Wenn vorher der EXEC-Befehl aufgerufen wird, werden alle Befehle ausgeführt.
Gleichzeitig verwendet Redis AOF (Append-Only File), um Transaktionen mithilfe eines zusätzlichen Schreibvorgangs auf die Festplatte zu schreiben. Wenn eine Ausfallzeit oder ein Prozessabsturz auftritt, können Sie das Redis-Check-Aof-Tool verwenden, um die Nur-Anhänge-Datei zu reparieren, sodass der Dienst normal starten und einige Vorgänge wieder aufnehmen kann. (Empfohlen: „Redis Video Tutorial“)
Verwendung
Verwenden Sie den MULTI-Befehl, um die Redis-Transaktion explizit zu starten. Dieser Befehl antwortet immer mit OK. Zu diesem Zeitpunkt kann der Benutzer mehrere Befehle ausgeben, und Redis führt diese Befehle nicht aus, sondern stellt sie in die Warteschlange. Nach dem Aufruf von EXEC werden alle Befehle ausgeführt. Durch den Aufruf von DISCARD kann die Befehlswarteschlange in der Transaktion geleert und die Transaktion beendet werden.
Das folgende Beispiel erhöht atomar die Tasten foo und bar.
>MULTI OK >INCR foo QUEUED >INCR bar QUEUED >EXEC 1)(整数)1 2)(整数)1
Wie aus der obigen Befehlsausführung ersichtlich ist, gibt EXEC ein Array zurück, in dem jedes Element das Rückgabeergebnis eines einzelnen Befehls in der Transaktion ist und die Reihenfolge mit der Reihenfolge des Befehls übereinstimmt ausgestellt wurde.
Wenn eine Redis-Verbindung im Kontext einer MULTI-Anfrage steht, werden alle Befehle mit der Zeichenfolge QUEUED (aus Sicht des Redis-Protokolls als Statusantwort gesendet) beantwortet und in der Befehlswarteschlange eingereiht. Nur wenn EXEC aufgerufen wird, werden die in der Warteschlange befindlichen Befehle ausgeführt und das tatsächliche Ergebnis wird zu diesem Zeitpunkt zurückgegeben.
Das obige ist der detaillierte Inhalt vonWas nützen Redis-Transaktionen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!