Skip to content

Kapitel 9: Sorted Set-Befehle (perfekt für Ranglisten)

In diesem Kapitel lernst du die wichtigsten Befehle für den Sorted Set-Datentyp in Redis.

9.1 Kernbefehle (unverzichtbar)

Elemente zu einem Sorted Set hinzufügen (mit Score)

bash
# Syntax
ZADD schlüssel score1 element1 [score2 element2 ...]

# Beispiel
ZADD leaderboard 100 "Max" 85 "Anna" 95 "Lisa"
# Fügt 3 Elemente mit Scores hinzu

# Nur hinzufügen, wenn noch nicht vorhanden
ZADD leaderboard NX 90 "Tom"

# Nur aktualisieren, wenn bereits vorhanden
ZADD leaderboard XX 110 "Max"

Wichtig: Sorted Sets sind nach Score sortiert (aufsteigend).

Alle Elemente anzeigen (aufsteigend - niedrigster Score zuerst)

bash
# Syntax
ZRANGE schlüssel start stop [WITHSCORES]

# Beispiel
ZRANGE leaderboard 0 -1 WITHSCORES
# Ausgabe:
# 1) "Anna"
# 2) "85"
# 3) "Lisa"
# 4) "95"
# 5) "Max"
# 6) "100"

Hinweis: 0 -1 bedeutet alle Elemente anzeigen.

Alle Elemente anzeigen (absteigend - höchster Score zuerst)

bash
# Syntax
ZREVRANGE schlüssel start stop [WITHSCORES]

# Beispiel
ZREVRANGE leaderboard 0 -1 WITHSCORES
# Ausgabe:
# 1) "Max"
# 2) "100"
# 3) "Lisa"
# 4) "95"
# 5) "Anna"
# 6) "85"

Score eines Elements abrufen

bash
# Syntax
ZSCORE schlüssel element

# Beispiel
ZSCORE leaderboard "Max"
# Ausgabe: "100"

Score eines Elements ändern (inkrementieren)

bash
# Syntax
ZINCRBY schlüssel inkrement element

# Beispiel
ZINCRBY leaderboard 5 "Max"
# Max's Score wird um 5 erhöht (jetzt 105)

ZINCRBY leaderboard -3 "Anna"
# Anna's Score wird um 3 verringert (jetzt 82)

Element aus einem Sorted Set entfernen

bash
# Syntax
ZREM schlüssel element1 [element2 ...]

# Beispiel
ZREM leaderboard "Tom"
# Entfernt "Tom" aus dem Sorted Set

ZREM leaderboard "Max" "Anna"
# Entfernt mehrere Elemente auf einmal

Anzahl der Elemente in einem Sorted Set abrufen

bash
# Syntax
ZCARD schlüssel

# Beispiel
ZCARD leaderboard
# Ausgabe: (integer) 3 (3 Elemente)

Rang (Position) eines Elements abrufen (aufsteigend - kleinster Score = Rang 0)

bash
# Syntax
ZRANK schlüssel element

# Beispiel
ZRANK leaderboard "Anna"
# Ausgabe: (integer) 0 (niedrigster Score, Rang 0)

ZRANK leaderboard "Max"
# Ausgabe: (integer) 2 (höchster Score, Rang 2)

Rang (Position) eines Elements abrufen (absteigend - höchster Score = Rang 0)

bash
# Syntax
ZREVRANK schlüssel element

# Beispiel
ZREVRANK leaderboard "Max"
# Ausgabe: (integer) 0 (höchster Score, Rang 0)

ZREVRANK leaderboard "Anna"
# Ausgabe: (integer) 2 (niedrigster Score, Rang 2)

Elemente in einem Score-Bereich anzeigen

bash
# Syntax (aufsteigend)
ZRANGEBYSCORE schlüssel min_score max_score [WITHSCORES]

# Beispiel
ZRANGEBYSCORE leaderboard 90 100 WITHSCORES
# Zeigt Elemente mit Score zwischen 90 und 100
# Ausgabe:
# 1) "Lisa"
# 2) "95"
# 3) "Max"
# 4) "100"

Anzahl der Elemente in einem Score-Bereich zählen

bash
# Syntax
ZCOUNT schlüssel min_score max_score

# Beispiel
ZCOUNT leaderboard 90 100
# Ausgabe: (integer) 2 (2 Elemente im Bereich)

9.2 Anwendungsszenarien: Praxisbeispiele

Szenario 1: Produktverkaufs-Rangliste

bash
# Verkaufszahlen hinzufügen
ZADD product_sales 500 "Product A" 300 "Product B" 450 "Product C"

# Top 3 Produkte anzeigen
ZREVRANGE product_sales 0 2 WITHSCORES

# Verkaufszahlen aktualisieren
ZINCRBY product_sales 50 "Product B"
# Product B's Verkaufszahl wird um 50 erhöht

Szenario 2: Benutzer-Punktestand

bash
# Punktestand hinzufügen
ZADD user_scores 1000 "Max" 850 "Anna" 920 "Lisa"

# Top 10 Benutzer anzeigen
ZREVRANGE user_scores 0 9 WITHSCORES

# Punkte hinzufügen
ZINCRBY user_scores 50 "Max"

# Benutzer-Rang anzeigen
ZREVRANK user_scores "Anna"

Szenario 3: Artikel-Bewertungen

bash
# Bewertungen hinzufügen (Durchschnittsbewertung)
ZADD article_ratings 4.5 "Artikel 1" 3.8 "Artikel 2" 4.9 "Artikel 3"

# Top-bewertete Artikel anzeigen
ZREVRANGE article_ratings 0 -1 WITHSCORES

# Bewertung aktualisieren
ZADD article_ratings 4.7 "Artikel 2"

Anfänger-Fehlerquellen

Fehler 1: Score und Element verwechselt

bash
# Falsch: Score und Element vertauscht
ZADD leaderboard "Max" 100
# Fehler: (error) ERR value is not a valid float

# Richtig: Score ZUERST, dann Element
ZADD leaderboard 100 "Max"

Fehler 2: Aufsteigende/Absteigende Befehle verwechselt

bash
# Falsch: Erwartet, dass ZRANGE die höchsten Scores zuerst anzeigt
ZRANGE leaderboard 0 -1 WITHSCORES
# Zeigt aufsteigend (niedrig → hoch)

# Richtig: ZREVRANGE für absteigend (hoch → niedrig)
ZREVRANGE leaderboard 0 -1 WITHSCORES

Fehler 3: Rang vs. Score verwechselt

bash
# Score abrufen (die tatsächliche Punktzahl)
ZSCORE leaderboard "Max"
# Ausgabe: "100"

# Rang abrufen (die Position in der Rangliste)
ZRANK leaderboard "Max"
# Ausgabe: (integer) 2 (Rang 2, da aufsteigend sortiert)

Zusammenfassung

In diesem Kapitel haben wir:

  • ✅ Die wichtigsten Sorted Set-Befehle gemeistert (ZADD, ZRANGE, ZREVRANGE, ZSCORE, etc.)
  • ✅ Gelernt, wie man Scores ändert (ZINCRBY)
  • ✅ Praxisbeispiele für Ranglisten und Rankings kennengelernt
  • ✅ Häufige Anfängerfehler verstanden

Im nächsten Kapitel werden wir die Redis-Persistenz lernen!

Übungen

  1. Praktische Übung:

    • Erstelle eine Rangliste für 5 Freunde mit ihren Punkteständen
    • Zeige die Top 3 an (absteigend)
    • Erhöhe den Punktestand eines Freundes
    • Zeige seinen Rang an
  2. Szenario-Übung:

    • Simuliere eine Produktverkaufs-Rangliste
    • Füge 10 Produkte mit Verkaufszahlen hinzu
    • Zeige die Top 5 Produkte an
    • Aktualisiere die Verkaufszahlen eines Produkts
  3. Bewertungs-Übung:

    • Erstelle eine Liste mit Artikel-Bewertungen
    • Zeige die Top-bewerteten Artikel an
    • Aktualisiere eine Bewertung

Frei für alle Anfänger