en / de
AI
Expertisen
Methoden
Dienstleistungen
Referenzen
Jobs & Karriere
Firma
Technologie-Trends TechCast WebCast TechBlog News Events Academy

In-Memory Power: Redis erklärt

In diesem Blogbeitrag gehe ich auf die In-Memory Datenbank Redis ein. Ziel des Artikels ist, einen Überblick über Redis zu geben und technisches Verständnis zu schaffen.

Hier ein kurzer Überblick über die behandelten Themen:

Was ist Redis?

Redis ist eine In-Memory Datenbank, die weit über die klassische Key-Value Speicherung hinausgeht.

Es steht für Remote Dictionary Server und hält seine Daten im Arbeitsspeicher (RAM) statt auf der Festplatte – dadurch ist es extrem schnell. Redis zählt zur Kategorie der NoSQL-Datenbanken.

Persistenz ist optional und kann entweder periodisch über Snapshots mittels RDB (Redis Database Backup) oder über ein Append Only File (AOF) realisiert werden. Ausserdem ist es möglich, beide Mechanismen (RDB sowie AOF) zu kombinieren.

Es ist in der Programmiersprache C geschrieben (-> sehr ressourcenschonend) und bietet Clients für viele aktuelle Programmiersprachen (Python, Node.js, Go, Java, C# etc.) an.

Typische Einsatzgebiete

Zu den typischen Einsatzgebieten von Redis zählen:

Zeitliche Entwicklung

Die folgende Tabelle zeigt die zeitliche Entwicklung von der Entstehung, bis zur Übernahme und Lizenzwechsel durch Redis Inc. sowie der Entstehung des Forks Valkey auf:

Jahr Ereignis Lizenz
2009 Redis wird von Salvatore Sanfilippo („antirez“) in Italien entwickelt. BSD-3-Clause
2015 Redis Inc. übernimmt zentrale Entwicklung. Redis wird populär. BSD-3-Clause
März 2024 Der Community-Fork „Valkey“ entsteht unter der Linux Foundation. Dies wurde u.a. initiiert von AWS, Google, Oracle, Snap, VMware. Ziel: Echte Open-Source-Fortsetzung von Redis (bzw. nun Valkey) unter der BSD-3-Clause. BSD-3-Clause
April 2024 Redis Inc. kündigt neue Lizenzpolitik an: Redis 7.4 und 8.0 erscheinen unter RSALv2 / SSPLv1, später zusätzlich unter AGPLv3. AGPLv3 ist zwar open source, jedoch mit Einschränkungen. RSALv2 / SSPLv1 / AGPLv3 (Tri-Lizenz)

Unterstützte Datentypen

Redis bietet eine Menge verschiedener Datentypen an. Nachfolgend werden die wichtigsten Datentypen von Redis mit ein paar konkreten Use Cases aufgezeigt:

Datentyp Beschreibung Use Cases
Strings Einfachster und häufigster Datentyp in Redis Cache für einfache Werte (z. B. JSON, Tokens, Counter)
Hashes Wie JSON-Objekt oder Dictionary, Key-Value Paare innerhalb eines Keys Objekte, User-Profile, Settings
Lists Verkettete Liste von Strings Queues, Stacks (FIFO/LIFO), Task- oder Message-Buffer
Sets Unsortierte Mengen einzigartiger Werte Tagging-Systeme, Membership-Prüfungen
Sorted Sets Wie Sets, wobei jedes Element einen Score hat Leaderboards, Priority Queues, Zeitbasierte Scores
Streams Ideal für Event Streams und Message Queues Event Sourcing, Logverarbeitung, Messaging zwischen Services
Bitmaps Erlauben effizientes Speichern und Abfragen von Flags / Booleans pro Bit Nutzeraktivitäten, Feature-Flags, Zähler mit minimalem Speicherverbrauch
HyperLogLog Platzsparender (~12 KB), probabilistischer Datentyp zur Zählung einzigartiger Elemente Unique Besucher zählen, Kardinalitätsschätzungen
Geospatial Speichert geografische Koordinaten und erlaubt Distanz- und Radiusabfragen Standortsuche (z. B.: „Shops in der Nähe“), Entfernungsmessung

Ausserdem gibt es zahlreiche Redis-Module, welche entweder über die Redis-Distribution Redis Stack genutzt oder alternativ manuell geladen werden können.

Hier die gängigsten Redis-Module und deren Nutzen:

Redis-Modul Nutzen
RedisJSON Speicherung & Abfrage von JSON-Dokumenten
RediSearch Volltextsuche, Filter, Aggregation
RedisGraph Graphdatenbank (ähnlich wie Neo4j)
RedisTimeSeries Zeitreihen-Speicherung & -Abfragen
RedisBloom Probabilistische Datenstrukturen (z. B. Bloom-, Cuckoo-Filter)
RedisAI Machine Learning Modelle direkt in Redis ausführen
RedisGears Event-Processing & serverseitige Logik mit Python/JavaScript

Hauptarchitekturen

Redis kann auf vielfältige Weise eingesetzt werden. Je nach Anforderungen an das System eignet sich eine der folgenden Hauptarchitekturen:

In den nachfolgenden Kapiteln wird auf die Redis-Hauptarchitekturen näher eingegangen.

Redis Single-Node

Redis als Single-Node ist die einfachste Art, Redis zu betreiben.
Hierbei ist mit Node eine einzelne Redis-Instanz gemeint.

Wichtigste Eigenschaften von Redis Single-Node:

-> Einfach, aber kein Schutz vor Ausfall.

Redis Single-Node Architektur

Redis Replication

Redis Replication wird manchmal auch Redis Primary-Replica Replication genannt (ehemals Redis Master-Slave Replication).

Wichtigste Eigenschaften von Redis Replication:

-> Bessere Performance + Datenredundanz, aber kein automatisches Failover.

Redis Replication Architektur

Redis Replication mit Sentinel

Wichtigste Eigenschaften von Redis Replication mit Sentinel:

-> Automatisches Failover + Monitoring, hohe Verfügbarkeit.

Redis Replication mit Sentinel Architektur

Redis Cluster

Wichtigste Eigenschaften von Redis Cluster:

-> Hohe Skalierbarkeit + Ausfallsicherheit.

Redis Cluster Architektur

Cloud-Managed Redis

Ebenfalls besteht die Möglichkeit, Redis über einen Cloud-Anbieter zu betreiben. Dabei muss man sich selber nicht mehr um Aspekte wie Hochverfügbarkeit, Backups, Skalierung, Sicherheit, Updates und Monitoring kümmern.

Hier eine Übersicht bekannter Anbieter und dem entsprechenden Produkt:

Anbieter Produkt
AWS Amazon ElastiCache for Redis
Azure Azure Cache for Redis
Google Cloud Memorystore for Redis
Upstash Upstash Redis
Redis Inc. Redis Cloud / Redis Enterprise Cloud

Bemerkung: Hinter den Kulissen eines Cloud-gemanagedem Redis läuft eine Form der oben genannten Architekturen.

Redis im CAP-Theorem

Je nach Architektur ändern sich die CAP-Eigenschaften (Consistency, Availability und Partition Tolerance).

Das CAP-Theorem besagt, dass ein verteiltes System bei Netzwerkausfällen nur zwei der drei CAP-Eigenschaften gleichzeitig garantieren kann.

Im Single-Node-Betrieb handelt es sich nicht um ein verteiltes System. Da es keine Replicas gibt und Cluster Partitionen nicht möglich sind, müssen in diesem Betrieb keine Partitionen toleriert werden. Somit wird die Eigenschaft P nicht erfüllt, jedoch A und C.

Redis Replication und Redis Replication mit Sentinel erfüllen die Eigenschaften A und P. Gibt es bspw. einen Netzwerkunterbruch zwischen dem Primary und seinen Replicas, akzeptiert der Primary trotzdem Schreibbefehle vom Client. Sollten jedoch die Daten direkt von den Replicas gelesen werden, kann die Konsistenz der Daten, aufgrund der asynchronen Replikation, nicht gewährleistet werden (-> eventual consistency).

Grundsätzlich ist Redis Cluster AP. Bei einem Quorum-Verlust zeigt es jedoch CP-Verhalten, da es Schreiboperationen stoppt, um die Konsistenz zu wahren.

Die folgende Abbildung zeigt auf, welche Redis-Architekturen welche Eigenschaften des CAP-Theorems erfüllen:

CAP-Eigenschaften der Redis-Architekturen

Persistenz-Mechanismen

Da Redis eine In-Memory Datenbank ist, muss man im Fall eines Ausfalls seiner Redis-Instanz mit einem Datenverlust rechnen. Möchte man seine Daten dennoch persistieren, so bietet Redis mehrere Persistenz-Mechanismen an:

Persistenz-Mechanismus Beschreibung Fazit
RDB (Redis Database Backup) Redis erstellt periodisch Snapshots des gesamten Datenbestands und speichert sie anschliessend als komprimierte Binärdatei (z. B. als dump.rdb). Ein Vorteil ist das schnelle Wiederherstellen des Datenbestands bei einem Startvorgang. Ein Nachteil ist, dass Datenänderungen seit dem letzten Snapshot bei einem Absturz verloren gehen.

RDB -> schnelle Wiederherstellung

AOF (Append Only File) Redis hängt jede Write-Operation, die es ausführt, an das Ende eines Logfiles (appendonly.aof). Bei einem allfälligen Neustart von Redis kann das Logfile „abgespielt“ und dadurch der exakte Zustand wiederhergestellt werden. Die Datensicherheit ist höher verglichen mit RDB. Jedoch ist AOF langsamer als RDB aufgrund von mehr I/O-Zugriffe.

AOF -> hohe Datensicherheit

Hybrid (RDB + AOF) Kombination für Balance zwischen Speed und Sicherheit Falls eine schnelle Wiederherstellung des Datenbestands sowie auch eine hohe Datensicherheit gefordert sind, wird der hybride Ansatz empfohlen.

Selbstverständlich kann Redis auch ohne Persistenz-Mechanismen betrieben werden. Dies ist standardmässig der Fall, wenn man Redis als Cache nutzt (bspw. vor einer Datenbank).

Zugriff auf Redis

Redis läuft standardmäßig auf Port 6379. Man sprichst Redis über ein einfaches Textprotokoll (RESP=Redis Serialization Protocol) oder eine Client-Library an.

Zugriff über CLI:

redis-cli
127.0.0.1:6379> SET user:1 "Anna"
OK
127.0.0.1:6379> GET user:1
"Anna"

Ausserdem bietet Redis Client-Bibliotheken für praktisch jede Sprache an:

Programmiersprache Redis Client-Bibliothek
C# StackExchange.Redis
Go go-redis
Java Jedis, Lettuce
JavaScript ioredis
PHP predis, phpredis
Python redis-py

Das folgende Code-Beispiel in Python illustriert, wie einfach es ist, Redis als Cache zu nutzen:

import redis

r = redis.Redis(host='localhost', port=6379, db=0)

# Daten cachen
r.set("user:42:name", "Anna", ex=60)  # ex = Ablaufzeit in Sekunden

# Daten abrufen
print(r.get("user:42:name"))

Deployment

Redis kann auf folgende Arten eingesetzt werden:

Deployment Beschreibung Code-Befehl
Lokal Direkt auf dem Rechner oder Server installieren
apt install redis-server
Docker Schnell testbar oder für DevOps-Workflows
docker run -p 6379:6379 redis
Redis-Stack Erweiterte Distribution von Redis: Besteht aus Redis plus offiziellen Redis Inc. Modulen (JSON, Search, Graph, TimeSeries, Bloom)
docker run -p 6379:6379 -p 8001:8001 redis/redis-stack
Cloud-Service Managed Redis von AWS (ElastiCache), Azure Cache for Redis, Google Memorystore, Upstash etc.

Vor- und Nachteile von Redis

Nachfolgend werden die Vor- und Nachteile von Redis bezogen auf die jeweilige Kategorie aufgezeigt:

Kategorie Vorteile Nachteile
Performance Sehr schnell, da In-Memory (Zugriffszeiten im Mikrosekundenbereich) RAM ist teuer
Datenstruktur Vielfältig (Strings, Sets, Hashes etc.) Keine komplexen Queries möglich, keine SQL-ähnliche Abfragesprache
Persistenz Optional mittels RDB / AOF Keine ACID-Transaktionen möglich
Skalierung Möglich mit Cluster, Replication, Sentinel Komplexe Architektur

Fazit

Redis ist ein High-Performance-Baustein, ideal für Szenarien, die eine niedrige Latenz und einen hohen Datendurchsatz erfordern. Es ergänzt relationale Datenbanken perfekt, z. B. als Cache, Queue oder Echtzeit-Analytics-Backend. Redis kann lokal, in Docker Containern oder in der Cloud betrieben und über viele Programmiersprachen genutzt werden. Je nach Anwendungsfall ist es aufgrund der BSD-Lizenz sinnvoller, den Redis-Fork Valkey zu verwenden.

Kommentare

Schreiben Sie einen Kommentar

Ihre E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Newsletter - aktuelle Angebote, exklusive Tipps und spannende Neuigkeiten

 Jetzt anmelden

Copyright © 2025 Noser Engineering AG – Alle Rechte vorbehalten.

NACH OBEN
Privacy Policy Cookie Policy
Zur Webcast Übersicht