Appearance
Kapitel 3: Redis Kernkonzepte
In diesem Kapitel lernst du die grundlegenden Konzepte von Redis, die für die Arbeit mit Redis unerlässlich sind.
3.1 Redis Kernkonzepte (einfach erklärt, keine tiefen Prinzipien nötig)
Schlüssel (Key)
- 🔑 Der eindeutige Identifikator für Daten, ähnlich wie ein Dateiname
- Kann benutzerdefiniert benannt werden (Namenskonventionen beachten)
- Beispiel:
user:1001,product:name
Namenskonventionen:
# Empfohlene Namensgebung
user:1001 # Benutzerinformationen
product:name # Produktname
session:abc123 # Sitzungsdaten
cache:homepage # Cache-DatenWert (Value)
- 📊 Der gespeicherte Dateninhalt
- Unterstützt verschiedene Datentypen (Kernunterschied zu anderen Caches)
- Kann Strings, Zahlen, Objekte, Listen etc. sein
Datenbank (Database)
- 🗄️ Redis hat standardmäßig 16 Datenbanken (Nummern 0-15)
- Kann zwischen Datenbanken wechseln, sie sind voneinander unabhängig
- Jede Datenbank ist isoliert
bash
# Zur Datenbank 1 wechseln
SELECT 1
# Anzahl der Schlüssel in der aktuellen Datenbank anzeigen
DBSIZE
# Aktuelle Datenbank leeren (vorsichtig verwenden)
FLUSHDB
# Alle Datenbanken leeren (vorsichtig, löscht alle Daten)
FLUSHALLIn-Memory-Speicherung
- ⚡ Redis speichert Daten primär im Arbeitsspeicher (RAM)
- Sehr schnelle Lese-/Schreibgeschwindigkeit
- Unterstützt Persistenz auf Festplatte (um Datenverlust zu verhindern)
Vorteile der In-Memory-Speicherung:
- 🚀 Extrem hohe Geschwindigkeit (im Mikrosekundenbereich)
- 🔄 Geringe Latenz
- 📊 Hoher Durchsatz
Ablaufzeit (TTL - Time To Live)
- ⏰ Man kann Schlüsseln eine Ablaufzeit setzen
- Abgelaufene Daten werden automatisch gelöscht (unverzichtbar für Caching-Szenarien)
- Ideal für temporäre Daten wie Sitzungen, Verifizierungscodes
bash
# Ablaufzeit setzen (in Sekunden)
EXPIRE session:user123 3600 # 1 Stunde
# Verbleibende Zeit anzeigen
TTL session:user123
# -1: Unbefristet
# -2: Abgelaufen oder existiert nicht
# Ablaufzeit entfernen
PERSIST session:user1233.2 Redis Kerndatentypen (höchste Priorität, unverzichtbar für Datenerstellung)
Redis unterstützt 5 Grunddatentypen. Jeder Typ hat spezifische Anwendungsszenarien.
1. Strings (String) - der grundlegendste Typ
Eigenschaften:
- Einfachste Datenstruktur
- Kann Text oder Zahlen speichern
- Maximal 512 MB pro String
Anwendungsszenarien:
- ✅ Caching
- ✅ Zähler
- ✅ Sitzungsspeicherung
- ✅ Einstellungen speichern
Beispiel:
bash
SET username "max"
GET username
# Ausgabe: "max"
SET counter 100
INCR counter # 101
DECR counter # 1002. Hashes (Hash) - Schlüssel-Wert-Sammlungen
Eigenschaften:
- Ähnlich wie Objekte in JavaScript oder Python-Dictionaries
- Speichert Feld-Wert-Paare
- Ideal für Objekte
Anwendungsszenarien:
- ✅ Benutzerinformationen speichern
- ✅ Produktinformationen speichern
- ✅ Objekte mit mehreren Feldern
Beispiel:
bash
HSET user:1001 name "Max" age 25 email "max@email.com"
HGET user:1001 name
# Ausgabe: "Max"
HGETALL user:1001
# Ausgabe: name Max age 25 email max@email.com3. Listen (List) - geordnete, duplikatfähige Sammlungen
Eigenschaften:
- Geordnete Sequenz
- Kann Duplikate enthalten
- Ähnlich wie Arrays
Anwendungsszenarien:
- ✅ Nachrichtenwarteschlangen
- ✅ Neueste Listen
- ✅ Chronologische Daten
Beispiel:
bash
LPUSH news "Artikel 1" # Links einfügen
RPUSH news "Artikel 2" # Rechts einfügen
LRANGE news 0 -1 # Alle Elemente anzeigen
# Ausgabe: Artikel 1, Artikel 2
LPOP news # Linkes Element ausgeben und löschen4. Mengen (Set) - ungeordnete, duplikatfreie Sammlungen
Eigenschaften:
- Keine Reihenfolge
- Keine Duplikate
- Schnelle Mitgliedschaftsprüfung
Anwendungsszenarien:
- ✅ Duplikatentfernung
- ✅ Schnittmenge/Vereinigungsmenge-Operationen
- ✅ Tags, Label
Beispiel:
bash
SADD tags "redis" "database" "cache"
SADD tags "redis" # Duplikat wird ignoriert
SMEMBERS tags
# Ausgabe: redis database cache
SISMEMBER tags "redis" # Prüfen, ob Element existiert
# Ausgabe: 1 (wahr)5. Sortierte Mengen (Sorted Set) - geordnete, duplikatfreie Sammlungen
Eigenschaften:
- Ähnlich wie Set, aber mit Scores (Punktzahl) für Sortierung
- Automatische Sortierung nach Score
- Jedes Element hat einen Score
Anwendungsszenarien:
- ✅ Ranglisten
- ✅ Rankings
- ✅ Leaderboards
Beispiel:
bash
ZADD leaderboard 100 "Max" 85 "Anna" 95 "Lisa"
ZRANGE leaderboard 0 -1 WITHSCORES # Aufsteigend
# Ausgabe: Anna 85 Lisa 95 Max 100
ZREVRANGE leaderboard 0 -1 WITHSCORES # Absteigend
# Ausgabe: Max 100 Lisa 95 Anna 853.3 Redis Datentypen-Auswahl (Anfänger-Fehlervermeidung)
Wähle den Datentyp basierend auf dem Szenario:
| Szenario | Empfohlener Datentyp | Grund |
|---|---|---|
| Einfache Schlüssel-Wert-Speicherung | String | Einfach und effizient |
| Benutzerinformationen | Hash | Strukturierte Datenspeicherung |
| Nachrichtenwarteschlange | List | Geordnet, FIFO |
| Tags, Duplikatentfernung | Set | Automatische Duplikatentfernung |
| Ranglisten | Sorted Set | Automatische Sortierung |
Tipps zur Auswahl:
- Einfache Werte → String
- Objekte mit Feldern → Hash
- Reihenfolge wichtig → List oder Sorted Set
- Duplikatfreiheit wichtig → Set oder Sorted Set
- Sortierung wichtig → Sorted Set
3.4 Praxisbeispiel: Verschiedene Datentypen erstellen
Beispiel 1: String verwenden (Sitzungsspeicherung)
bash
# Sitzungsdaten speichern
SET session:user123 "{id: 123, name: 'Max', role: 'admin'}" EX 3600
# Sitzung abrufen
GET session:user123Beispiel 2: Hash verwenden (Benutzerinformationen)
bash
# Benutzerinformationen speichern
HSET user:123 id 123 name "Max" email "max@email.com" age 25
# Benutzerinformationen abrufen
HGETALL user:123Beispiel 3: List verwenden (Neueste Artikel)
bash
# Artikel-IDs hinzufügen
LPUSH latest:articles 1001 1002 1003
# Neueste 10 Artikel abrufen
LRANGE latest:articles 0 9Beispiel 4: Set verwenden (Benutzertags)
bash
# Tags hinzufügen
SADD user:123:tags "sports" "tech" "music"
# Alle Tags anzeigen
SMEMBERS user:123:tagsBeispiel 5: Sorted Set verwenden (Punktestand)
bash
# Punktestand hinzufügen
ZADD scores 1000 "Max" 850 "Anna" 920 "Lisa"
# Top 3 anzeigen
ZREVRANGE scores 0 2 WITHSCORESZusammenfassung
In diesem Kapitel haben wir:
- ✅ Die Kernkonzepte von Redis verstanden (Key, Value, Database, In-Memory, TTL)
- ✅ Die 5 Grunddatentypen kennengelernt (String, Hash, List, Set, Sorted Set)
- ✅ gelernt, wie man den richtigen Datentyp für verschiedene Szenarien auswählt
- ✅ Praxisbeispiele für jeden Datentyp erstellt
Im nächsten Kapitel werden wir die grundlegenden Redis-Befehle im Detail lernen!
Übungen
Theoretische Fragen:
- Was ist der Unterschied zwischen Redis-Datenbanken und MySQL-Datenbanken?
- Wann würdest du Hash statt String verwenden?
- Was passiert, wenn die TTL eines Schlüssels abläuft?
Praktische Übung:
- Erstelle einen String-Schlüssel für einen Verifizierungscode mit 5 Minuten Ablaufzeit
- Erstelle einen Hash für deine eigenen Benutzerinformationen
- Erstelle eine Liste mit deinen 5 Lieblingsbüchern
- Erstelle ein Set mit 5 Tags
- Erstelle ein Sorted Set mit 3 Freunden und ihren Punkteständen
Szenario-Analyse:
- Welchen Datentyp würdest du für einen Warenkorb verwenden? Warum?
- Welchen Datentyp würdest du für ein Like-System verwenden? Warum?
