Redis Watch Command

Redis Watch Command
Wenn Sie Redis ernst meinen, möchten Sie Transaktionen verwenden, um Ihre Daten zu verwalten. Redis -Transaktionen unterscheiden sich nicht sehr von Transaktionen in einer relationalen Datenbank.

Eine Datenbank -Transaktion bezieht sich auf eine einzelne Arbeitseinheit, die aus einzelnen bis mehreren Abfragen besteht. In Fällen kann eine Operation nur als Transaktion klassifiziert werden.

Wir werden uns damit nicht befassen, aber wir werden lernen, wie man den Watch -Befehl neben Redis -Transaktionen für diesen verwendet.

Was sind Transaktionen?

In Redis bestehen Transaktionen aus vier Hauptbefehlen: Watch, Exec, Defard und Multi.

Mit den obigen Befehlen können Sie einen Block öffnen und mehrere Befehle gleichzeitig hinzufügen. Nach Abschluss führen Sie die Befehle als eine einzige Einheit aus.

Damit eine Transaktion erfolgreich ist, stellt Redis sicher, dass:

  1. Alle in einer Transaktionseinheit angegebenen Befehle werden nacheinander ausgeführt. Daher der erste Lauf, der zuerst läuft.
  2. Alle Befehle in einer Transaktionseinheit müssen erfolgreich ausgeführt werden. Wenn einer der Befehle in der Einheit fehlschlägt, schlägt der gesamte Transaktionsblock ebenfalls fehl. Diese Funktion wird als Atomic Command Execution bezeichnet
  3. Drittens werden Befehle in einer Transaktion serialisiert. Daher kann ein Client kein Server sein, während eine Transaktionseinheit ausgeführt wird.

Redis erstellen Transaktion

Sie erstellen eine Transaktionseinheit mit dem Multi -Befehl. Der Multi -Befehl wird OK zurückgegeben. Sie können alle nacheinander alle Transaktionsbefehle hinzufügen.

Anstatt die Befehle auszuführen, stellt Redis sie im Einfügen auf, bis Sie sie anrufen.

Ein Beispiel ist wie unten gezeigt:

127.0.0.1: 6379> Multi
OK

Redis Execute Transaction Unit

Wie bereits erwähnt, stellt Redis die Befehle in einer Transaktionseinheit an, bis Sie sie manuell ausführen.

Wir können dies mit dem Exec -Befehl tun. Dies fordert Redis an.

Eine Beispielnutzung ist wie unten gezeigt:

127.0.0.1: 6379> Newkey "100" setzen
IN WARTESCHLANGE
127.0.0.1: 6379> inkret
IN WARTESCHLANGE
127.0.0.1: 6379> NEWKEY ERHALTEN
IN WARTESCHLANGE
127.0.0.1: 6379>

Sie werden feststellen, dass jeder ausgeführte Befehl in die Warteschlange ist. Ein Befehl in der Warteschlange ist ein Befehl, der ausführen soll, nachdem Exec angerufen wurde.

Um es auszuführen, rufen Sie Exec als:

127.0.0.1: 6379> Exec
1) OK
2) (Ganzzahl) 101
3) "101"

Dies sollte alle Befehle ausführen und die resultierenden Werte zurückgeben.

Redis entfernen Befehlswarteschlangen

Angenommen, Sie möchten Ihre Befehlswarteschlange reinigen und alle geplanten Befehle spülen? Dafür können Sie den Befehl entsorgen wie gezeigt verwenden:

127.0.0.1: 6379> Multi
OK
127.0.0.1: 6379> Newkey "100" setzen
IN WARTESCHLANGE
127.0.0.1: 6379> inkret
IN WARTESCHLANGE
127.0.0.1: 6379> NEWKEY ERHALTEN
IN WARTESCHLANGE
127.0.0.1: 6379> wegwerfen
OK

Nach dem Ausführen des Befehlungsbefehls kehrt Redis OK zurück und schließt die Transaktionseinheit.

Redis Watch Command

Mit dem Watch-Befehl in Redis können Sie die Überprüfungs- und Set-Funktion implementieren. Die Watch -Befehle akzeptieren Redis -Tasten als Parameter und überwachen sie.

Wenn einer der angegebenen Schlüssel geändert wird, bevor der Exec -Befehl aufgerufen wird, endet Redis automatisch die Transaktion und gibt eine NULL -Antwort zurück.

Nehmen Sie das folgende Beispiel:

var = mykey holen
var = var + 1
Setzen Sie MyKey $ var

Im obigen Beispiel haben wir eine Operation, die den Wert eines Schlüssels um 1 erhöht. Dies ist natürlich kein Problem, wenn nur ein einzelner Kunde den genannten Betrieb ausführt.

Wenn jedoch mehrere Clients versuchen, den obigen Vorgang gleichzeitig auszuführen, tritt eine Rennbedingung auf und gibt einen ungültigen Wert zurück.

Wir können dies lösen, indem wir den Schlüssel wie gezeigt beobachten:

Beobachten Sie Mykey
var = mykey holen
var = var + 1
Multi
Setzen Sie MyKey $ var
Geschäftsführer

Wenn ein Client arbeitet und der Wert des Schlüssels vor der Ausführung der Transaktion geändert wird, schlägt die Ausführung fehl.

Verwenden Sie den Befehl für Unwuchs, um alle beobachteten Schlüssel zu entfernen.

Abschluss

Dieser Artikel wurde mit Transaktionen in einer Redis -Datenbank besprochen und arbeitet. Überprüfen Sie die Dokumentation, um mehr zu finden.

Danke fürs Lesen!!