Appearance
Kapitel 8: Set-Befehle (Duplikatfreiheit)
In diesem Kapitel lernst du die wichtigsten Befehle für den Set-Datentyp in Redis.
8.1 Kernbefehle (unverzichtbar)
Elemente zu einem Set hinzufügen
bash
# Syntax
SADD schlüssel element1 [element2 ...]
# Beispiel
SADD tags "redis" "database" "cache"
# Ausgabe: (integer) 3 (3 Elemente hinzugefügt)
# Versuch, Duplikate hinzuzufügen
SADD tags "redis" "nosql"
# Ausgabe: (integer) 1 (nur 1 neues Element, "redis" war schon da)Wichtig: Sets erlauben keine Duplikate! SADD ignoriert bereits vorhandene Elemente.
Alle Elemente eines Sets anzeigen
bash
# Syntax
SMEMBERS schlüssel
# Beispiel
SMEMBERS tags
# Ausgabe:
# 1) "redis"
# 2) "database"
# 3) "cache"
# 4) "nosql"Hinweis: Sets sind ungeordnet - die Reihenfolge kann variieren!
Prüfen, ob ein Element in einem Set ist
bash
# Syntax
SISMEMBER schlüssel element
# Beispiel
SISMEMBER tags "redis"
# Ausgabe: (integer) 1 (ist im Set)
SISMEMBER tags "mysql"
# Ausgabe: (integer) 0 (ist nicht im Set)Elemente aus einem Set entfernen
bash
# Syntax
SREM schlüssel element1 [element2 ...]
# Beispiel
SREM tags "cache"
# Ausgabe: (integer) 1 (1 Element entfernt)
SREM tags "redis" "nosql"
# Ausgabe: (integer) 2 (2 Elemente entfernt)Anzahl der Elemente in einem Set abrufen
bash
# Syntax
SCARD schlüssel
# Beispiel
SCARD tags
# Ausgabe: (integer) 2 (2 Elemente im Set)Zufällige Elemente aus einem Set abrufen
bash
# Ein zufälliges Element abrufen (ohne Entfernung)
SRANDMEMBER tags
# Ausgabe: z.B. "redis"
# Mehrere zufällige Elemente abrufen
SRANDMEMBER tags 2
# Ausgabe: 2 zufällige Elemente
# Ein zufälliges Element abrufen UND ENTFERNEN
SPOP tags
# Ausgabe: z.B. "database" (wurde aus dem Set entfernt)Element von einem Set in ein anderes verschieben
bash
# Syntax
SMOVE quell_set ziel_set element
# Beispiel
SADD set1 "a" "b" "c"
SADD set2 "x" "y" "z"
SMOVE set1 set2 "b"
# "b" wird von set1 nach set2 verschoben8.2 Mengenoperationen (Sets)
Schnittmenge (Intersection)
bash
# Syntax
SINTER set1 set2 [set3 ...]
# Beispiel
SADD set1 "a" "b" "c" "d"
SADD set2 "c" "d" "e" "f"
SINTER set1 set2
# Ausgabe:
# 1) "c"
# 2) "d"Vereinigungsmenge (Union)
bash
# Syntax
SUNION set1 set2 [set3 ...]
# Beispiel
SUNION set1 set2
# Ausgabe:
# 1) "a"
# 2) "b"
# 3) "c"
# 4) "d"
# 5) "e"
# 6) "f"Differenzmenge (Difference)
bash
# Syntax
SDIFF set1 set2 [set3 ...]
# Beispiel
SDIFF set1 set2
# Ausgabe: Elemente, die in set1 sind, aber nicht in set2
# 1) "a"
# 2) "b"Erklärung: SDIFF set1 set2 = Elemente, die in set1 sind, aber nicht in set2.
Schnittmenge speichern
bash
# Syntax
SINTERSTORE ziel_set set1 set2 [set3 ...]
# Beispiel
SINTERSTORE result_set set1 set2
# Speichert die Schnittmenge in "result_set"Vereinigungsmenge speichern
bash
# Syntax
SUNIONSTORE ziel_set set1 set2 [set3 ...]
# Beispiel
SUNIONSTORE result_set set1 set2Differenzmenge speichern
bash
# Syntax
SDIFFSTORE ziel_set set1 set2 [set3 ...]
# Beispiel
SDIFFSTORE result_set set1 set28.3 Anwendungsszenarien: Praxisbeispiele
Szenario 1: Benutzertags (Duplikatentfernung)
bash
# Tags für einen Benutzer hinzufügen
SADD user:1:tags "sports" "tech" "music" "tech"
# "tech" wird nur einmal hinzugefügt (Duplikatentfernung)
# Alle Tags anzeigen
SMEMBERS user:1:tags
# Prüfen, ob ein Tag existiert
SISMEMBER user:1:tags "sports"
# Tag entfernen
SREM user:1:tags "music"Szenario 2: Gemeinsame Freunde finden (Schnittmenge)
bash
# Freunde von Benutzer 1
SADD friends:1 "Anna" "Lisa" "Max" "Tom"
# Freunde von Benutzer 2
SADD friends:2 "Lisa" "Tom" "Peter" "Sara"
# Gemeinsame Freunde finden
SINTER friends:1 friends:2
# Ausgabe:
# 1) "Lisa"
# 2) "Tom"Szenario 3: Besucher-Statistik (Duplikatfreie Zähler)
bash
# Eindeutige Besucher einer Seite zählen
SADD page:home:visitors "user:1"
SADD page:home:visitors "user:2"
SADD page:home:visitors "user:1" # Duplikat, wird ignoriert
# Anzahl der eindeutigen Besucher
SCARD page:home:visitors
# Ausgabe: (integer) 2Anfänger-Fehlerquellen
Fehler 1: Set-Elemente sind ungeordnet
bash
# Falsch: Erwartet eine bestimmte Reihenfolge
SADD colors "rot" "grün" "blau"
SMEMBERS colors
# Ausgabe könnte sein: "blau", "rot", "grün" (Reihenfolge variiert!)
# Richtig: Verstehe, dass Sets UNGEORDNET sind
# Wenn Reihenfolge wichtig ist, verwende List oder Sorted SetFehler 2: Schnittmenge/Vereinigungsmenge/Differenzmenge verwechselt
bash
# Falsch: Denkt, SDIFF set1 set2 = SDIFF set2 set1
SDIFF set1 set2
# Ausgabe: Elemente in set1, aber nicht in set2
SDIFF set2 set1
# Ausgabe: Elemente in set2, aber nicht in set1
# (kann ein unterschiedliches Ergebnis sein!)Merke: SDIFF A B ≠ SDIFF B A!
Fehler 3: Duplikate werden ignoriert (kein Fehler)
bash
# Verhalten: SADD ignoriert Duplikate (kein Fehler!)
SADD tags "redis" "redis" "redis"
# Ausgabe: (integer) 1 (nur 1 Element wurde hinzugefügt)
SMEMBERS tags
# Ausgabe: 1) "redis"Zusammenfassung
In diesem Kapitel haben wir:
- ✅ Die wichtigsten Set-Befehle gemeistert (SADD, SMEMBERS, SISMEMBER, SREM, SCARD)
- ✅ Mengenoperationen gelernt (SINTER, SUNION, SDIFF)
- ✅ Praxisbeispiele für Tags und gemeinsame Freunde kennengelernt
- ✅ Häufige Anfängerfehler verstanden
Im nächsten Kapitel werden wir die Sorted Set-Befehle lernen!
Übungen
Praktische Übung:
- Erstelle ein Set mit deinen 5 Lieblings-Hobbys
- Versuche, ein Duplikat hinzuzufügen
- Zeige alle Elemente an
- Prüfe, ob ein bestimmtes Hobby im Set ist
- Entferne ein Hobby
Szenario-Übung:
- Erstelle 2 Sets: "Freunde von Anna" und "Freunde von Max"
- Finde gemeinsame Freunde (Schnittmenge)
- Finde alle Freunde (Vereinigungsmenge)
- Finde Freunde, die nur Anna hat (Differenzmenge)
Besucher-Statistik-Übung:
- Simuliere eine Seite mit eindeutigen Besuchern
- Füge 10 Besucher hinzu (einige als Duplikate)
- Zähle die eindeutigen Besucher
