Skip to content

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)

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"]
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 sie

Element 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 sie

Alle 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 Elemente

Hinweis: 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 Liste

Erklärung von anzahl:

  • anzahl > 0: Entfernt anzahl Elemente von links
  • anzahl < 0: Entfernt anzahl Elemente von rechts
  • anzahl = 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 Element

Element an bestimmter Position überschreiben

bash
# Syntax
LSET schlüssel index element

# Beispiel
LSET tasks 0 "Neuer Task"
# Überschreibt das erste Element

Liste 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 9

Szenario 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 -1

Anfänger-Fehlerquellen

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 RPUSH

Fehler 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 Elemente

Fehler 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

  1. 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)
  2. Szenario-Übung:

    • Simuliere eine Nachrichtenwarteschlange (FIFO)
    • Sende 5 Nachrichten
    • Verarbeite 3 Nachrichten
  3. 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
  4. Fehlerbehebung:

    • Simuliere einen Fehler (z.B. LPOP aus einer leeren Liste)
    • Beobachte die Ausgabe
    • Verstehe, dass (nil) zurückgegeben wird

Frei für alle Anfänger