In diesem Lab werden Sie grundlegende Redis-Listenoperationen erkunden. Sie lernen, wie Sie Listendaten mithilfe von Befehlen wie LTRIM, LINSERT, LPOP, RPOP und BLPOP verwalten und bearbeiten.
Insbesondere üben Sie das Trimmen (Beschneiden) von Listen auf bestimmte Bereiche mit LTRIM, das Einfügen von Elementen vor oder nach vorhandenen Elementen mit LINSERT, das Entfernen von Elementen vom Anfang und Ende von Listen mit LPOP bzw. RPOP und das Blockieren, bis ein Element zum Entfernen (Pop) mit BLPOP verfügbar ist. Diese Operationen sind unerlässlich, um in Redis-Listen gespeicherte Daten effizient zu verwalten.
Skills Graph
%%%%{init: {'theme':'neutral'}}%%%%
flowchart RL
redis(("Redis")) -.-> redis/RedisGroup(["Redis"])
redis/RedisGroup -.-> redis/access_cli("Connect Using CLI")
redis/RedisGroup -.-> redis/add_left("Push List Left")
redis/RedisGroup -.-> redis/add_right("Push List Right")
redis/RedisGroup -.-> redis/remove_left("Pop List Left")
redis/RedisGroup -.-> redis/remove_right("Pop List Right")
subgraph Lab Skills
redis/access_cli -.-> lab-552098{{"Redis Listenoperationen"}}
redis/add_left -.-> lab-552098{{"Redis Listenoperationen"}}
redis/add_right -.-> lab-552098{{"Redis Listenoperationen"}}
redis/remove_left -.-> lab-552098{{"Redis Listenoperationen"}}
redis/remove_right -.-> lab-552098{{"Redis Listenoperationen"}}
end
Eine Liste mit LTRIM trimmen (beschneiden)
In diesem Schritt lernen Sie, wie Sie eine Redis-Liste mit dem Befehl LTRIM trimmen (beschneiden). Mit LTRIM können Sie einen Bereich von Elementen innerhalb einer Liste angeben und so effektiv alle Elemente außerhalb dieses Bereichs entfernen. Dies ist nützlich, um die Listengröße zu verwalten und sich auf bestimmte Teile Ihrer Daten zu konzentrieren.
Stellen Sie zunächst über den Befehl redis-cli in Ihrem Terminal eine Verbindung zum Redis-Server her:
redis-cli
Erstellen wir nun eine Liste namens mylist und füllen sie mit einigen Werten. Führen Sie den folgenden Befehl innerhalb von redis-cli aus:
RPUSH mylist "one" "two" "three" "four" "five"
Sie sollten die folgende Ausgabe sehen:
(integer) 5
Dies zeigt an, dass fünf Elemente zur Liste hinzugefügt wurden.
Verwenden wir nun LTRIM, um nur die Elemente von Index 1 bis Index 3 (einschließlich) beizubehalten. Denken Sie daran, dass Redis-Listenindizes nullbasiert sind. Führen Sie den folgenden Befehl aus:
LTRIM mylist 1 3
Die Ausgabe wird sein:
OK
Dies bedeutet, dass die LTRIM-Operation erfolgreich war.
Um das Ergebnis zu überprüfen, rufen wir die gesamte Liste mit LRANGE ab. Führen Sie den folgenden Befehl aus:
LRANGE mylist 0 -1
Sie sollten die folgende Ausgabe sehen:
1) "two"
2) "three"
3) "four"
Wie Sie sehen, verbleiben nur die Elemente an den Indizes 1, 2 und 3 ("two", "three" und "four") in der Liste. Die Elemente "one" und "five" wurden entfernt.
Beenden Sie abschließend redis-cli, indem Sie exit eingeben und die Eingabetaste drücken. Dadurch wird sichergestellt, dass Ihre Befehle protokolliert werden.
exit
LTRIM ist ein leistungsstarkes Werkzeug zum Verwalten der Größe und des Inhalts Ihrer Redis-Listen. Durch die Angabe des gewünschten Bereichs können Sie unerwünschte Elemente effizient entfernen und sich auf die Daten konzentrieren, die am wichtigsten sind.
Elemente mit LINSERT einfügen
In diesem Schritt lernen Sie, wie Sie Elemente mit dem Befehl LINSERT in eine Redis-Liste einfügen. Mit LINSERT können Sie ein neues Element entweder vor oder nach einem vorhandenen Element in der Liste einfügen. Dies ist nützlich, um die Reihenfolge der Elemente beizubehalten und neue Elemente an bestimmten Positionen hinzuzufügen.
Ausgehend vom vorherigen Schritt sollten wir eine Liste namens mylist mit den folgenden Elementen haben: "two", "three" und "four".
Stellen Sie über den Befehl redis-cli eine Verbindung zum Redis-Server her:
redis-cli
Fügen wir nun das Element "one" vor dem Element "two" in die Liste ein. Wir verwenden die Option BEFORE mit LINSERT. Führen Sie den folgenden Befehl aus:
LINSERT mylist BEFORE "two" "one"
Sie sollten die folgende Ausgabe sehen:
(integer) 4
Dies zeigt an, dass die Liste jetzt 4 Elemente hat.
Um das Ergebnis zu überprüfen, rufen wir die gesamte Liste mit LRANGE ab. Führen Sie den folgenden Befehl aus:
LRANGE mylist 0 -1
Sie sollten die folgende Ausgabe sehen:
1) "one"
2) "two"
3) "three"
4) "four"
Wie Sie sehen, wurde das Element "one" vor "two" eingefügt.
Als Nächstes fügen wir das Element "five" nach dem Element "four" in die Liste ein. Wir verwenden die Option AFTER mit LINSERT. Führen Sie den folgenden Befehl aus:
LINSERT mylist AFTER "four" "five"
Die Ausgabe wird sein:
(integer) 5
Dies bedeutet, dass die LINSERT-Operation erfolgreich war und die Liste jetzt 5 Elemente hat.
Rufen wir die gesamte Liste erneut mit LRANGE ab. Führen Sie den folgenden Befehl aus:
LRANGE mylist 0 -1
Sie sollten die folgende Ausgabe sehen:
1) "one"
2) "two"
3) "three"
4) "four"
5) "five"
Wie Sie sehen, wurde das Element "five" nach "four" eingefügt.
Beenden Sie abschließend redis-cli, indem Sie exit eingeben und die Eingabetaste drücken. Dadurch wird sichergestellt, dass Ihre Befehle protokolliert werden.
exit
LINSERT bietet eine präzise Kontrolle darüber, wo neue Elemente zu Ihren Redis-Listen hinzugefügt werden, sodass Sie die gewünschte Reihenfolge und Struktur Ihrer Daten beibehalten können.
Elemente mit LPOP und RPOP entfernen (Pop)
In diesem Schritt lernen Sie, wie Sie Elemente aus einer Redis-Liste mit den Befehlen LPOP und RPOP entfernen und abrufen können. LPOP entfernt das erste Element (das am weitesten links stehende) der Liste und gibt es zurück, während RPOP das letzte Element (das am weitesten rechts stehende) der Liste entfernt und es zurückgibt. Diese Befehle sind nützlich, um Warteschlangen- (queue-like) oder Stapel-ähnliches (stack-like) Verhalten mit Redis-Listen zu implementieren.
Ausgehend vom vorherigen Schritt sollten wir eine Liste namens mylist mit den folgenden Elementen haben: "one", "two", "three", "four" und "five".
Verbinden Sie sich mit dem Redis-Server mit dem Befehl redis-cli:
redis-cli
Lassen Sie uns nun LPOP verwenden, um das erste Element der Liste zu entfernen und abzurufen. Führen Sie den folgenden Befehl aus:
LPOP mylist
Sie sollten die folgende Ausgabe sehen:
"one"
Dies zeigt an, dass das Element "one" aus der Liste entfernt und zurückgegeben wurde.
Um das Ergebnis zu überprüfen, rufen wir die verbleibenden Elemente mit LRANGE ab. Führen Sie den folgenden Befehl aus:
LRANGE mylist 0 -1
Sie sollten die folgende Ausgabe sehen:
1) "two"
2) "three"
3) "four"
4) "five"
Wie Sie sehen können, ist das Element "one" nicht mehr in der Liste.
Als Nächstes verwenden wir RPOP, um das letzte Element der Liste zu entfernen und abzurufen. Führen Sie den folgenden Befehl aus:
RPOP mylist
Die Ausgabe wird sein:
"five"
Dies bedeutet, dass das Element "five" aus der Liste entfernt und zurückgegeben wurde.
Rufen wir die verbleibenden Elemente erneut mit LRANGE ab. Führen Sie den folgenden Befehl aus:
LRANGE mylist 0 -1
Sie sollten die folgende Ausgabe sehen:
1) "two"
2) "three"
3) "four"
Wie Sie sehen können, ist das Element "five" nicht mehr in der Liste.
Löschen Sie abschließend die Liste mylist und beenden Sie redis-cli, indem Sie exit eingeben und die Eingabetaste drücken. Dies stellt sicher, dass Ihre Befehle protokolliert werden.
DEL mylist
exit
LPOP und RPOP sind grundlegende Befehle für die Verwaltung von Redis-Listen als Warteschlangen (queues) oder Stapel (stacks). Sie bieten eine einfache und effiziente Möglichkeit, Elemente von beiden Enden der Liste zu entfernen und abzurufen.
Blockieren und Entfernen mit BLPOP
In diesem Schritt lernst du, wie du den Befehl BLPOP verwendest, eine blockierende Version von LPOP. BLPOP ermöglicht es einem Client, zu warten (zu blockieren), bis ein Element in einer Liste verfügbar ist, bevor er versucht, es zu entfernen (pop). Dies ist besonders nützlich für den Aufbau zuverlässiger Message Queues (Nachrichtenwarteschlangen) oder Task Queues (Aufgabenwarteschlangen), bei denen Konsumenten auf das Hinzufügen neuer Elemente warten müssen.
Für diesen Schritt musst du zwei Terminalfenster öffnen. Stelle in beiden Terminals mit dem Befehl redis-cli eine Verbindung zum Redis-Server her:
redis-cli
Lass das erste Terminal mit Redis verbunden. Im zweiten Terminal führen wir den blockierenden Pop-Befehl aus.
Stelle zunächst sicher, dass die Liste mylist aus den vorherigen Schritten gelöscht wurde. Wenn nicht, führe den folgenden Befehl aus:
DEL mylist
Führe im zweiten Terminal den folgenden Befehl aus:
BLPOP mylist 100
Dieser Befehl blockiert maximal 100 Sekunden und wartet darauf, dass ein Element in der Liste mylist verfügbar wird. Wenn innerhalb von 100 Sekunden kein Element hinzugefügt wird, tritt ein Timeout auf und der Befehl gibt nil zurück.
Wechsle nun zurück zum ersten Terminal. Fügen wir der Liste mylist ein Element hinzu. Führe den folgenden Befehl aus:
RPUSH mylist "hello"
Unmittelbar nach dem Ausführen des Befehls RPUSH im ersten Terminal solltest du im zweiten Terminal die folgende Ausgabe des Befehls BLPOP sehen:
1) "mylist"
2) "hello"
Dies zeigt an, dass der Befehl BLPOP das Element "hello" erfolgreich aus der Liste mylist entfernt (pop) hat. Das erste Element des zurückgegebenen Arrays ist der Schlüssel der Liste, und das zweite Element ist der Wert, der entfernt wurde.
Wenn du das Element nicht schnell genug hinzugefügt hast, ist der Befehl BLPOP im zweiten Terminal möglicherweise mit einem Timeout abgelaufen und hat nil zurückgegeben. Wenn dies der Fall ist, führe den Befehl BLPOP im zweiten Terminal einfach erneut aus und füge dann schnell ein Element zur Liste im ersten Terminal hinzu.
Lass uns nun BLPOP mit mehreren Listen ausprobieren. Führe im zweiten Terminal den folgenden Befehl aus:
BLPOP mylist anotherlist 100
Dieser Befehl blockiert und wartet darauf, dass ein Element entweder in mylist oder anotherlist verfügbar wird.
Wechsle zurück zum ersten Terminal und füge anotherlist ein Element hinzu. Führe den folgenden Befehl aus:
RPUSH anotherlist "world"
Du solltest im zweiten Terminal die folgende Ausgabe des Befehls BLPOP sehen:
1) "anotherlist"
2) "world"
Dies zeigt, dass BLPOP auf Elemente in mehreren Listen warten kann und die Liste zurückgibt, aus der das Element entfernt wurde.
Beende abschließend redis-cli in beiden Terminals, indem du exit eingibst und die Eingabetaste drückst. Dadurch wird sichergestellt, dass deine Befehle protokolliert werden.
exit
BLPOP ist ein entscheidender Befehl für den Aufbau robuster und skalierbarer Anwendungen, die auf asynchrone Kommunikation und Aufgabenverarbeitung angewiesen sind. Er ermöglicht es Konsumenten, effizient auf neue Daten zu warten, ohne den Redis-Server ständig abzufragen (polling).
Zusammenfassung
In diesem Lab haben Sie grundlegende Redis-Listenoperationen erkundet. Sie haben gelernt, wie Sie Listendaten mit Befehlen wie LTRIM, LINSERT, LPOP, RPOP und BLPOP verwalten und bearbeiten.
Sie haben geübt, Listen mit LTRIM auf bestimmte Bereiche zu beschneiden (trimming), Elemente vor oder nach vorhandenen Elementen mit LINSERT einzufügen, Elemente vom Anfang und Ende von Listen mit LPOP bzw. RPOP zu entfernen und mit BLPOP zu blockieren, bis ein Element zum Entfernen (pop) verfügbar ist. Diese Operationen sind unerlässlich, um in Redis-Listen gespeicherte Daten effizient zu verwalten.