Skip to content

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-Daten

Wert (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)
FLUSHALL

In-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:user123

3.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    # 100

2. 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.com

3. 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öschen

4. 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 85

3.3 Redis Datentypen-Auswahl (Anfänger-Fehlervermeidung)

Wähle den Datentyp basierend auf dem Szenario:

SzenarioEmpfohlener DatentypGrund
Einfache Schlüssel-Wert-SpeicherungStringEinfach und effizient
BenutzerinformationenHashStrukturierte Datenspeicherung
NachrichtenwarteschlangeListGeordnet, FIFO
Tags, DuplikatentfernungSetAutomatische Duplikatentfernung
RanglistenSorted SetAutomatische Sortierung

Tipps zur Auswahl:

  1. Einfache Werte → String
  2. Objekte mit Feldern → Hash
  3. Reihenfolge wichtig → List oder Sorted Set
  4. Duplikatfreiheit wichtig → Set oder Sorted Set
  5. 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:user123

Beispiel 2: Hash verwenden (Benutzerinformationen)

bash
# Benutzerinformationen speichern
HSET user:123 id 123 name "Max" email "max@email.com" age 25

# Benutzerinformationen abrufen
HGETALL user:123

Beispiel 3: List verwenden (Neueste Artikel)

bash
# Artikel-IDs hinzufügen
LPUSH latest:articles 1001 1002 1003

# Neueste 10 Artikel abrufen
LRANGE latest:articles 0 9

Beispiel 4: Set verwenden (Benutzertags)

bash
# Tags hinzufügen
SADD user:123:tags "sports" "tech" "music"

# Alle Tags anzeigen
SMEMBERS user:123:tags

Beispiel 5: Sorted Set verwenden (Punktestand)

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

# Top 3 anzeigen
ZREVRANGE scores 0 2 WITHSCORES

Zusammenfassung

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

  1. 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?
  2. 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
  3. 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?

Frei für alle Anfänger