Appearance
Kapitel 7: List-Befehle (geordnete Sammlungen)
In diesem Kapitel lernst du die wichtigsten Befehle für den List-Datentyp in Redis.
7.1 Kernbefehle (unverzichtbar)
Elemente von links (Kopf) in die Liste einfügen
bash
# Syntax
LPUSH schlüssel element1 [element2 ...]
# Beispiel
LPUSH tasks "Task 1"
LPUSH tasks "Task 2" "Task 3"
# Liste ist jetzt: ["Task 3", "Task 2", "Task 1"]Elemente von rechts (Ende) in die Liste einfügen
bash
# Syntax
RPUSH schlüssel element1 [element2 ...]
# Beispiel
RPUSH tasks "Task 4"
RPUSH tasks "Task 5" "Task 6"
# Liste ist jetzt: ["Task 3", "Task 2", "Task 1", "Task 4", "Task 5", "Task 6"]Element von links (Kopf) aus der Liste ausgeben und löschen
bash
# Syntax
LPOP schlüssel [anzahl]
# Beispiel
LPOP tasks
# Ausgabe: "Task 3" (und löscht es aus der Liste)
# Mehrere auf einmal ausgeben
LPOP tasks 2
# Gibt die ersten 2 Elemente aus und löscht sieElement von rechts (Ende) aus der Liste ausgeben und löschen
bash
# Syntax
RPOP schlüssel [anzahl]
# Beispiel
RPOP tasks
# Ausgabe: "Task 6" (und löscht es aus der Liste)
# Mehrere auf einmal ausgeben
RPOP tasks 2
# Gibt die letzten 2 Elemente aus und löscht sieAlle Elemente der Liste anzeigen
bash
# Syntax
LRANGE schlüssel start stop
# Beispiel
LRANGE tasks 0 -1
# 0 = erstes Element, -1 = letztes Element
# Ausgabe: alle Elemente
LRANGE tasks 0 2
# Ausgabe: die ersten 3 Elemente
LRANGE tasks -3 -1
# Ausgabe: die letzten 3 ElementeHinweis: Indizes beginnen bei 0!
Länge der Liste abrufen
bash
# Syntax
LLEN schlüssel
# Beispiel
LLEN tasks
# Ausgabe: (integer) 4 (4 Elemente in der Liste)Elemente aus der Liste entfernen
bash
# Syntax
LREM schlüssel anzahl element
# Beispiel
RPUSH colors "rot" "blau" "grün" "blau" "gelb"
LREM colors 1 "blau"
# Entfernt das ERSTE "blau" von links
LREM colors -1 "blau"
# Entfernt das ERSTE "blau" von rechts
LREM colors 0 "rot"
# Entfernt ALLE "rot" aus der ListeErklärung von anzahl:
anzahl > 0: EntferntanzahlElemente von linksanzahl < 0: EntferntanzahlElemente von rechtsanzahl = 0: Entfernt ALLE Elemente, die dem Wert entsprechen
Element an bestimmter Position abrufen
bash
# Syntax
LINDEX schlüssel index
# Beispiel
LINDEX tasks 0
# Ausgabe: erstes Element
LINDEX tasks -1
# Ausgabe: letztes ElementElement an bestimmter Position überschreiben
bash
# Syntax
LSET schlüssel index element
# Beispiel
LSET tasks 0 "Neuer Task"
# Überschreibt das erste ElementListe abschneiden (nur bestimmten Bereich behalten)
bash
# Syntax
LTRIM schlüssel start stop
# Beispiel
LTRIM tasks 0 2
# Behält nur die ersten 3 Elemente (Index 0, 1, 2)Element vor oder nach einem bestimmten Element einfügen
bash
# Syntax
LINSERT schlüssel BEFORE|AFTER vorhandenes_element neues_element
# Beispiel
RPUSH fruits "Apfel" "Banane" "Kirsche"
LINSERT fruits BEFORE "Banane" "Birne"
# Liste: ["Apfel", "Birne", "Banane", "Kirsche"]
LINSERT fruits AFTER "Kirsche" "Dattel"
# Liste: ["Apfel", "Birne", "Banane", "Kirsche", "Dattel"]7.2 Anwendungsszenarien: Praxisbeispiele
Szenario 1: Einfache Nachrichtenwarteschlange (FIFO)
bash
# Nachrichten senden (in die Warteschlange einfügen)
RPUSH message_queue "Nachricht 1"
RPUSH message_queue "Nachricht 2"
RPUSH message_queue "Nachricht 3"
# Nachrichten verarbeiten (aus der Warteschlange entnehmen)
LPOP message_queue
# Verarbeitet "Nachricht 1"
LPOP message_queue
# Verarbeitet "Nachricht 2"Erklärung: FIFO = First In, First Out (wer zuerst kommt, wird zuerst bedient)
Szenario 2: Neueste Artikel-Liste
bash
# Neuen Artikel hinzufügen
LPUSH latest_articles "Artikel 101"
LPUSH latest_articles "Artikel 102"
LPUSH latest_articles "Artikel 103"
# Die neuesten 10 Artikel anzeigen
LRANGE latest_articles 0 9Szenario 3: Verlaufsprotokoll (Recent History)
bash
# Die letzten 5 besuchten Seiten speichern
LPUSH page_history "/home"
LPUSH page_history "/about"
LPUSH page_history "/products"
LPUSH page_history "/contact"
LPUSH page_history "/faq"
# Nur die letzten 5 behalten
LTRIM page_history 0 4
# Verlauf anzeigen
LRANGE page_history 0 -1Anfänger-Fehlerquellen
Fehler 1: Links/Rechts-Einfügen/-Ausgeben verwechselt
bash
# Falsch: Erwartet, dass LPUSH am Ende einfügt
LPUSH tasks "Task 1"
LPUSH tasks "Task 2"
LRANGE tasks 0 -1
# Ausgabe: ["Task 2", "Task 1"] (nicht ["Task 1", "Task 2"]!)
# Richtig: Verstehe, dass LPUSH am KOPF (links) einfügt
# Wenn du am Ende einfügen willst, verwende RPUSHFehler 2: Indizes falsch verwendet (Indizes beginnen bei 0!)
bash
# Falsch: Denkt, Indizes beginnen bei 1
LRANGE tasks 1 3
# Holt Elemente 1, 2, 3 (nicht 0, 1, 2!)
# Richtig: Indizes beginnen bei 0
LRANGE tasks 0 2
# Holt die ersten 3 ElementeFehler 3: LPOP/RPOP gibt nil zurück, wenn die Liste leer ist
bash
# Szenario: Liste ist leer
LRANGE tasks 0 -1
# Ausgabe: (empty list or set)
LPOP tasks
# Ausgabe: (nil) (kein Fehler, einfach leer)Zusammenfassung
In diesem Kapitel haben wir:
- ✅ Die wichtigsten List-Befehle gemeistert (LPUSH, RPUSH, LPOP, RPOP, LRANGE, etc.)
- ✅ Gelernt, wie man Nachrichtenwarteschlangen und neueste Listen erstellt
- ✅ Praxisbeispiele für Warteschlangen und Verlaufsprotokolle kennengelernt
- ✅ Häufige Anfängerfehler verstanden
Im nächsten Kapitel werden wir die Set-Befehle lernen!
Übungen
Praktische Übung:
- Erstelle eine Liste mit deinen 5 Lieblingsbüchern (verwende LPUSH)
- Zeige alle Bücher an
- Entferne das erste Buch (LPOP)
- Füge ein neues Buch am Ende hinzu (RPUSH)
- Entferne das letzte Buch (RPOP)
Szenario-Übung:
- Simuliere eine Nachrichtenwarteschlange (FIFO)
- Sende 5 Nachrichten
- Verarbeite 3 Nachrichten
Neuesten-Liste-Übung:
- Erstelle eine Liste für die neuesten 10 Artikel
- Füge 15 Artikel hinzu
- Behalte nur die neuesten 10 (verwende LTRIM)
- Zeige die neuesten 10 an
Fehlerbehebung:
- Simuliere einen Fehler (z.B. LPOP aus einer leeren Liste)
- Beobachte die Ausgabe
- Verstehe, dass
(nil)zurückgegeben wird
