Redis (Remote Dictionary Server) ist eine NoSQL-Datenbank, die alle Daten im Arbeitsspeicher hält. Dadurch erreicht sie extrem niedrige Latenzen im Sub-Millisekunden-Bereich. Entwickelt von Salvatore Sanfilippo im Jahr 2009, ist Redis heute eine der meistgenutzten In-Memory-Datenbanken der Welt.

Datenmodelle und Datentypen

Redis ist kein reiner Schlüssel-Wert-Speicher, sondern unterstützt viele Datentypen direkt:

  • Strings: einfache Werte wie Zahlen oder Text, z. B. für Zähler oder Session-Daten
  • Lists: geordnete Elemente für Warteschlangen (Queues)
  • Sets: ungeordnete, eindeutige Elemente für z. B. Tags
  • Sorted Sets: Sets mit Score — ideal für Ranglisten und Leaderboards
  • Hashes: Maps mit Feldern und Werten, z. B. für Benutzerprofile

Typische Einsatzgebiete

  • Cache: Häufig abgefragte Daten (z. B. Datenbankergebnisse, API-Antworten) werden zwischengespeichert, um die Last auf der eigentlichen Datenbank zu senken.
  • Session-Speicher: Login-Sitzungen von Webanwendungen bleiben zentral abrufbar und laufen nicht ab.
  • Message Queue: Über Lists oder Pub/Sub lassen sich Jobs zwischen Diensten austauschen.
  • Ranglisten und Zähler: Sorted Sets und atomare INCR-Befehle eignen sich perfekt für Echtzeit-Statistiken.

Wichtige Befehle

SET benutzer:42 "Anna"    # Wert speichern
GET benutzer:42           # Wert lesen
EXPIRE benutzer:42 3600   # Ablauf nach einer Stunde
INCR besucher            # Zähler atomar erhöhen
LPUSH jobs "pdf-job"     # Element in Queue einfügen
BRPOP jobs 0             # Element aus Queue holen (blockierend)

Persistenz und Skalierung

Obwohl Redis im RAM arbeitet, kann es Daten dauerhaft speichern: per Snapshot (RDB) oder Append-Only-File (AOF). Für hohe Verfügbarkeit gibt es Redis Sentinel und Redis Cluster mit automatischer Partitionierung. Viele Cloud-Anbieter bieten Redis als verwalteten Dienst an, z. B. Amazon ElastiCache.

Zum Vergleich relationaler und dokumentenorientierter Systeme: Siehe SQL-Grundlagen und MongoDB. Für verteilte Datenbanken: Sharding.