Redis rpoplpush

Redis rpoplpush
„Redis hat mehrere eingebaute Datentypen, und jeder ist für unterschiedliche Zwecke. Die Liste ist einer der weit verbreiteten Datentypen, mit denen mehr als 4 Milliarden Zeichenfolgen in einem bestimmten Redis -Schlüssel gespeichert werden können. Das Besondere an der Redisliste ist, dass das Einfügen und Entfernen von Elementen sowohl des Kopfes als auch des Schwanzes, die eine konstante Zeitkomplexität aufweist. Der Lpush Und Rpush werden verwendet, um Stringelemente in der Nähe des Kopfes und des Schwanzes einer Liste einzufügen. Auch der Lpop Und RPOP Entfernen Sie Listenelemente am Kopf und am Schwanz.”

Der Befehl rpoplpush

Der Befehl rpoplpush wird verwendet, um ein Element aus dem Schwanz einer Quellliste zu streichen und auf dem Kopf einer Zielliste einzulegen, die in einer bestimmten Taste gespeichert ist. Sowohl die Entfernung als auch die Einführung in Quell- und Ziellisten erfolgen gleichzeitig.

Nehmen wir an, dass eine in Key gespeicherte Liste A Enthält die Saiten "Apple", "Orange" und "Banane". Darüber hinaus enthält eine andere in Key B gespeicherte Liste die Elemente „Trauben“ und „Avocado“. Wenn wir den Befehl rpoplpush aufrufen, wobei List A die Quelle und die Liste B das Ziel ist, wird die Zeichenfolge „Banana“ aus der Liste A entfernt und kurz vor dem Element „Trauben“ in Liste B eingesetzt.

Syntax

Der Befehl rpoplpush hat die folgende Syntax.

Rpoplpush source_list_key destination_list_key

SCRECT_LIST_KEY: Dies ist der Redis -Schlüssel der Liste, die Sie benötigen, um ein Element zu entfernen.

Ziel_List_key: Dies ist der Redis -Schlüssel der Liste, den Sie zum eingespannten Element einfügen müssen.

Dieser Befehl gibt eine String -Antwort zurück, die aus der Quellliste ein gepacktes Listenelement ist, wenn die Quellliste verfügbar ist. Wenn die Quellliste nicht vorhanden ist, kehrt der Befehl zurück ein Nil Wert. In einigen Fällen kann Quelle und Ziel gleich sein. Daher wird es sowohl das Einfügen als auch die Entfernung in derselben Liste durchführen.

Anwendungsfall 01 - Implementierung der Messaging -Warteschlange

Redis -Listen wurden hauptsächlich in Messaging -Server -Implementierungen verwendet, bei denen die Hersteller Daten in der Nähe des Listenkopfs erstellen, und die Verbraucher verbrauchen Daten vom Schwanz der Liste, die in einem bestimmten Schlüssel gespeichert sind. Denken Sie an eine Situation, in der ein Netzwerkfehler oder ein Serverproblem ausgeworfen wird. Der Verbraucher kann die gepolsterten Daten verlieren, bevor die Verarbeitung beginnt. Es könnte ein Verlust sein, dass sich die Verbraucher in ihrem Leben nicht erholen können. Daher ist eine zuverlässigere Warteschlange erforderlich. Nutzen wir den Befehl rpoplpush, um eine Zuverlässigkeitswarteschlange zu implementieren.

Lassen Sie uns eine Liste erstellen Prozesslist mit ein paar Elementen, wie im Folgenden gezeigt. Der Befehl LPush kann verwendet werden, um einige Daten in die angegebene Liste zu erstellen.

LPush Processlist "P1" "P2" "P3" "P4"

Der obige Befehl drückt Elemente in der Nähe des Kopfes der Liste. Daher werden die Elemente in der folgenden Reihenfolge gespeichert.

"P4" | "p3" | "P2" | "P1"

Als nächstes werden wir die verwenden Rpoplpush Befehl als Client, um das letzte Element der List ProcessList zu übertreffen und in eine neue Liste zu geben, die am Schlüssel gespeichert ist Zuverlässigkeit.

RPOPLPUSH ProcessList Zuverlässigkeit

Im Idealfall muss das "P1" -Element aus der Quellliste angezeigt werden, und die Zeichenfolge „P1“ sollte die Ausgabe dieses Befehls sein. Gleichzeitig wird dieses Element in die in der Schlüssel gespeicherte Liste eingedrückt Zuverlässigkeit. Lassen Sie es uns mit dem untersuchen Lrange Befehl.

lRange Zuverlässigkeit 0 5

Ausgang:

Wir werden die anrufen Lrange Befehl auf der Liste Prozesslist sowie.

lRange processlist 0 5

Ausgang:

Wie erwartet wird das "P1" -Element aus der Quellliste entfernt. Der Rpoplpush Der Befehl wird empfohlen, mit Zuverlässigkeitswarteschlangen zu verwenden.

Anwendungsfall 02 - Implementierung zuverlässiger Arbeiterknoten zur Verarbeitung einzelner Anwendungen

Wie bereits erwähnt, können die Quelle und das Ziel für den Befehl rpoplpush gleich sein. In diesem Fall werden die Einfügung und Entfernung in derselben Liste durchgeführt. Dies kann bei der Implementierung eines Überwachungssystems nützlich sein, um Hunderte von Interviewanwendungen für einen bestimmten Job zu verarbeiten.

Mehrere Arbeitnehmer und iterieren über die Liste, bis alle Anwendungen bearbeitet wurden. Das Beste an dieser Art von kreisförmiger Warteschlange ist, dass es keine Anwendung verliert.

Erstellen wir eine neue Liste, JobApplicationList.

LPush JobApplicationList CV1 CV3 CV7 CV10

Die Liste sollte wie die folgenden Aussehen aussehen.

"CV10" | "CV7" | "CV3" | "CV1"

Nennen wir nun den Befehl rpoplpush mit derselben Liste wie die im folgenden angezeigten Quell- und Zielargumente.

rpoplpush JobApplicationList JobApplicationList

Wie erwartet wurde das Schwanzelement „CV1“ entfernt und vom Befehl zurückgegeben.

Wir können das inspizieren JobApplicationList Listen Sie erneut auf, um zu überprüfen, ob das Element „CV1“ in der Nähe des Kopfes derselben Liste eingefügt wurde.

lRange JobApplicationList 0 5

Wie Sie sehen können, wurde das "CV1" -Element aus dem Kopf der Liste eingefügt, die am Schlüssel gespeichert sind JobApplicationList. Die Kreisliste kann als zuverlässige Möglichkeit verwendet werden, Überwachungssysteme wie diese zu implementieren.

Abschluss

Zusammenfassend lässt sich sagen. Wie Sie wissen, akzeptiert dieser Befehl Quell- und Ziellisten als Argumente. Das Schwanzelement der Quellliste wird in der Nähe des Kopfes der Zielliste eingefügt und in einem bestimmten Schlüssel gespeichert. Wie erläutert, wird der Befehl rpoplpush verwendet, um zuverlässige Warteschlangen in Messaging -Systemen und auch in Überwachungssystemen zu implementieren, bei denen mehrere Arbeiterknoten auf der angegebenen Liste der Elemente parallel auf eine zuverlässige Weise arbeiten, wobei verlorene Wiederherstellungen ausgestattet sind. Dieser Befehl ist von der Redis Version 6 veraltet.2.0 und ermutigt zu verwenden der lmove Befehl mit dem RECHTS Und LINKS Argumente.