Appearance
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 einmalAnzahl 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öhtSzenario 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 WITHSCORESFehler 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
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
Szenario-Übung:
- Simuliere eine Produktverkaufs-Rangliste
- Füge 10 Produkte mit Verkaufszahlen hinzu
- Zeige die Top 5 Produkte an
- Aktualisiere die Verkaufszahlen eines Produkts
Bewertungs-Übung:
- Erstelle eine Liste mit Artikel-Bewertungen
- Zeige die Top-bewerteten Artikel an
- Aktualisiere eine Bewertung
