Appearance
Kapitel 6: Hash-Befehle (perfekt für Objektspeicherung)
In diesem Kapitel lernst du die wichtigsten Befehle für den Hash-Datentyp in Redis.
6.1 Kernbefehle (unverzichtbar)
Hash-Feldwert setzen
bash
# Syntax
HSET schlüssel feld wert [feld wert ...]
# Einzelnes Feld setzen
HSET user:1 name "Max"
# Mehrere Felder auf einmal setzen
HSET user:1 name "Max" age 25 email "max@email.com"
# Ausgabe: (integer) 3 (3 Felder hinzugefügt)
# Nur setzen, wenn Feld nicht existiert
HSETNX user:1 name "Anna"
# Nur erfolgreich, wenn "name" noch nicht existiertHash-Feldwert abrufen
bash
# Syntax
HGET schlüssel feld
# Beispiel
HGET user:1 name
# Ausgabe: "Max"
# Wenn Feld nicht existiert
HGET user:1 nicht_existierend
# Ausgabe: (nil)Mehrere Hash-Felder auf einmal setzen
bash
# Syntax (veraltet, aber noch unterstützt)
HMSET schlüssel feld1 wert1 feld2 wert2 ...
# Beispiel
HMSET user:2 name "Anna" age 30 email "anna@email.com"
# Hinweis: HSET kann seit Redis 4.0 auch mehrere Felder setzenEmpfehlung: Verwende HSET mit mehreren Argumenten statt HMSET.
Mehrere Hash-Felder auf einmal abrufen
bash
# Syntax
HMGET schlüssel feld1 feld2 ...
# Beispiel
HMGET user:1 name age email
# Ausgabe:
# 1) "Max"
# 2) "25"
# 3) "max@email.com"Alle Felder und Werte eines Hash abrufen
bash
# Syntax
HGETALL schlüssel
# Beispiel
HGETALL user:1
# Ausgabe:
# 1) "name"
# 2) "Max"
# 3) "age"
# 4) "25"
# 5) "email"
# 6) "max@email.com"Alle Felder eines Hash abrufen
bash
# Syntax
HKEYS schlüssel
# Beispiel
HKEYS user:1
# Ausgabe:
# 1) "name"
# 2) "age"
# 3) "email"Alle Werte eines Hash abrufen
bash
# Syntax
HVALS schlüssel
# Beispiel
HVALS user:1
# Ausgabe:
# 1) "Max"
# 2) "25"
# 3) "max@email.com"Hash-Feld löschen
bash
# Syntax
HDEL schlüssel feld [feld ...]
# Einzelnes Feld löschen
HDEL user:1 email
# Mehrere Felder auf einmal löschen
HDEL user:1 age email
# Ausgabe: (integer) 2 (2 Felder gelöscht)Prüfen, ob ein Hash-Feld existiert
bash
# Syntax
HEXISTS schlüssel feld
# Beispiel
HEXISTS user:1 name
# Ausgabe: (integer) 1 (existiert)
HEXISTS user:1 nicht_existierend
# Ausgabe: (integer) 0 (existiert nicht)Anzahl der Felder in einem Hash abrufen
bash
# Syntax
HLEN schlüssel
# Beispiel
HLEN user:1
# Ausgabe: (integer) 3 (3 Felder)Hash-Werte für numerische Operationen
bash
# Um 1 hochzählen
HINCRBY schlüssel feld inkrement
# Beispiel
HSET user:1 age 25
HINCRBY user:1 age 1
# age ist jetzt 26
# Um n hochzählen
HINCRBY user:1 age 5
# age ist jetzt 31
# Um Fließkommazahlen hochzählen
HINCRBYFLOAT schlüssel feld inkrement
# Beispiel
HSET product:1 price 99.99
HINCRBYFLOAT product:1 price 10.50
# price ist jetzt 110.496.2 Anwendungsszenarien: Praxisbeispiele
Szenario 1: Benutzerinformationen speichern
bash
# Benutzerinformationen speichern
HSET user:1001 id 1001 name "Max Mustermann" email "max@example.com" age 25
# Benutzerinformationen abrufen
HGETALL user:1001
# Einzelnes Feld aktualisieren
HSET user:1001 age 26
# Benutzer löschen (ganzen Hash löschen)
DEL user:1001Szenario 2: Produktinformationen speichern
bash
# Produktinformationen speichern
HSET product:1 id 1 name "Laptop" price 999.99 stock 50 category "Electronics"
# Produkt abrufen
HGETALL product:1
# Bestand reduzieren
HINCRBY product:1 stock -1
# Preis erhöhen
HINCRBYFLOAT product:1 price 50.00Szenario 3: Warenkorb-Artikel speichern
bash
# Warenkorb eines Benutzers
HSET cart:user:1 product:1 2 product:2 1 product:3 3
# Bedeutet: Benutzer 1 hat 2x Produkt 1, 1x Produkt 2, 3x Produkt 3
# Anzahl eines Produkts im Warenkorb ändern
HINCRBY cart:user:1 product:1 1
# Produkt 1 um 1 erhöhen
# Produkt aus Warenkorb entfernen
HDEL cart:user:1 product:2Anfänger-Fehlerquellen
Fehler 1: Hash-Schlüssel und Feld verwechselt
bash
# Falsch: Feld als separaten Schlüssel behandeln
SET user:1:name "Max"
SET user:1:age 25
# Richtig: Hash verwenden
HSET user:1 name "Max" age 25Fehler 2: Felder/werte-Anzahl stimmt bei HMSET nicht überein
bash
# Falsch: Ungerade Anzahl von Argumenten
HMSET user:1 name "Max" age
# Fehler: (error) ERR wrong number of arguments for HMSET
# Richtig: Immer paarweise (Feld Wert)
HMSET user:1 name "Max" age 25Fehler 3: HGETALL bei großen Hashes verwendet
bash
# Problem: HGETALL lädt alle Daten auf einmal
# Bei großen Hashes kann das die Leistung beeinträchtigen
# Besser: HSCAN verwenden für große Hashes
HSCAN user:1 0Zusammenfassung
In diesem Kapitel haben wir:
- ✅ Die wichtigsten Hash-Befehle gemeistert (HSET, HGET, HGETALL, etc.)
- ✅ Gelernt, wie man Hash-Felder批量 setzt und abruft
- ✅ Praxisbeispiele für Benutzerinformationen und Produkte kennengelernt
- ✅ Häufige Anfängerfehler verstanden
Im nächsten Kapitel werden wir die List-Befehle lernen!
Übungen
Praktische Übung:
- Erstelle einen Hash für deine eigenen Benutzerinformationen
- Füge mindestens 5 Felder hinzu
- Rufe alle Felder und Werte ab
- Aktualisiere einige Felder
- Lösche ein Feld
Szenario-Übung:
- Erstelle einen Hash für ein Produkt mit mindestens 5 Feldern
- Simuliere eine Bestandsreduzierung
- Simuliere eine Preiserhöhung
Warenkorb-Übung:
- Erstelle einen Warenkorb-Hash für einen Benutzer
- Füge 3 Produkte mit Mengen hinzu
- Ändere die Menge eines Produkts
- Entferne ein Produkt aus dem Warenkorb
