Skip to content

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 existiert

Hash-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 setzen

Empfehlung: 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.49

6.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:1001

Szenario 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.00

Szenario 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:2

Anfä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 25

Fehler 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 25

Fehler 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 0

Zusammenfassung

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

  1. 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
  2. Szenario-Übung:

    • Erstelle einen Hash für ein Produkt mit mindestens 5 Feldern
    • Simuliere eine Bestandsreduzierung
    • Simuliere eine Preiserhöhung
  3. 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

Frei für alle Anfänger