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.