Zum Inhalt springen

Redis: In-Memory Data Store einfach erklärt!

  • Daten

Redis ist eine Key-Value basierte NoSQL Datenbank, welche Daten In-Memory, also im Arbeitsspeicher (RAM), ablegt. Dieser Datenspeicher gehört heutzutage zu den am Häufigsten genutzten Schlüsselwertdatenbanken und wird beispielsweise für Caching eingesetzt. Die Abkürzung steht für Remote Dictionary Server.

Was sind NoSQL Datenbanken?

NoSQL („Not Only SQL“) beschreibt Datenbanken, welche im Gegensatz zu SQL nicht-relational sind, also unter anderem nicht in Tabellen organisiert werden können. Diese Ansätze lassen sich auch über verschiedene Computersysteme verteilen und sind dadurch höchst skalierbar. NoSQL Lösungen sind deshalb sehr interessant für viele Big Data Anwendungen.

Die Datenbanken zeichnen sich vor allem durch zwei Kriterien aus, die sehr weit gefasst sind. Zum einen werden Daten nicht in Tabellen gespeichert und zum anderen ist die Abfragesprache nicht SQL, was auch durch den Namen Not Only SQL deutlich wird.

Redis gehört den sogenannten Key-Value Stores an, die Kategorie innerhalt der NoSQL Datenbanken darstellen. Sie sind eine sehr einfach Datenstruktur in der jeder Datensatz als Wert mit einem einzigartigen Schlüssel abgespeichert ist. Über diesen Schlüssel können die Informationen gezielt abgefragt werden.

Das Bild zeigt die vier Kategorien von NoSQL Datenbanken, also Document Stores, Key-Value Stores, Wide Column Stores und Graphdatenbanken.
NoSQL Datenbankkategorien | Quelle: Autor

Wie funktioniert Redis?

Redis wurde entwickelt um einen zuverlässigen Datenspeicher zu haben, der in kurzer Zeit Informationen speichert und auch wieder ausgeben kann. Das Besondere an dieser Datenbank ist die Kombination aus dem bereits genannten Key-Value-Store und dem In-Memory Speicher.

Eine In-Memory Datenbank speichert die Daten auf dem Arbeitsspeicher (RAM) des Computers ab, statt sie auf eine Festplatte, wie HDD oder SSD, zu schreiben. Das beschleunigt den Prozess beim Schreiben und Lesen um ein Vielfaches, geht jedoch zu Lasten der Datensicherheit und der Kosten. Arbeitsspeicher ist in der Regel teurer als vergleichbarer Festplattenspeicher und wird beim Herunterfahren der Maschine oder bei einem Systemabsturz komplett gelöscht.

Jeder Eintrag in diesem Speicher wird ein eindeutiger Schlüssel zugewiesen über welchen man auf den Datensatz zugreifen kann. Da der Arbeitsspeicher von Computer meist ein begrenztes Gut ist, muss mit diesem sorgsam umgegangen werden. Dazu gehört auch, dass besondere Datenstrukturen genutzt werden, die möglichst wenig Speicherplatz verbrauchen.

In den meisten Fällen werden Strings als Datenstruktur genutzt und abgespeichert. Darüber hinaus gibt es auch andere Datentypen, welche Redis verarbeiten kann (vgl. IONOS (2020)):

  • Strings: Zeichenketten mit einer maximalen Speichergröße von 512 MB.
  • Hashes: Mapping zwischen einer Hash Repräsentation und einem zugehörigen String.
  • Listen: Eine Sammlung von Strings, welche in einer Liste abgespeichert wird.
  • Bitmaps: Kompakte Repräsentation für boolesche Werte.
  • Streams: Speziell für Redis entwickelte Art eines Log-Files.

Was ist ein In-Memory Storage?

Ein In-Memory-Speicher ist eine Art der Datenspeicherung, bei der die Daten im Hauptspeicher eines Computers und nicht auf einer Festplatte oder einem anderen dauerhaften Speichergerät gespeichert werden. Dies bedeutet, dass der Zugriff auf die Daten und ihre Bearbeitung viel schneller erfolgen kann als bei herkömmlichen Speichermethoden, da die Daten vor ihrer Verwendung nicht von der Festplatte gelesen werden müssen. In-Memory-Speicher werden häufig für Anwendungen verwendet, die einen extrem schnellen Zugriff auf Daten erfordern, wie z. B. Webanwendungen mit hohem Datenverkehr oder Echtzeit-Analysesysteme. Redis ist ein Beispiel für eine Datenbank mit In-Memory-Speicher.

Wenn die Daten im Arbeitsspeicher abgelegt sind, ergibt sich auch die Gefahr, dass bei einem Systemabsturz die Informationen verloren gehen, da es sich bei dem Arbeitsspeicher nicht um ein dauerhaftes Speichermedium handelt. Deshalb gibt es bei Redis zwei Optionen zur langfristigen Persistenz von Daten:

Die RDB-Persistenz (Redis DataBase) erstellt einen Schnappschuss der Daten im Speicher und speichert ihn in bestimmten Abständen auf der Festplatte. Der Snapshot kann so konfiguriert werden, dass er automatisch, manuell oder beides erfolgt. RDB ist eine gute Option, wenn Redis als Cache verwendet wird, da sie eine schnelle Wiederherstellung der Daten im Falle eines Absturzes ermöglicht.

Die AOF-Persistenz (Append Only File) protokolliert alle Schreibvorgänge in einer Protokolldatei. Diese Protokolldatei kann dann verwendet werden, um die Daten wiederherzustellen, falls Redis unerwartet heruntergefahren wird. Da AOF jeden Schreibvorgang protokolliert, kann es langsamer sein und mehr Speicherplatz verbrauchen als RDB-Persistenz, aber es ist eine bessere Option, wenn Redis als primärer Datenspeicher verwendet wird.

Redis bietet auch einen hybriden Modus, der sowohl RDB- als auch AOF-Persistenz für erhöhte Datensicherheit verwendet.

Welche Datentypen werden unterstützt?

Redis unterstützt fünf Hauptdatentypen:

  • Strings: Strings werden zum Speichern eines einzelnen binären Datenblob verwendet, bis zu einer maximalen Größe von 512 MB. Sie können zum Speichern von Text, Ganzzahlen oder Binärdaten verwendet werden.
  • Listen: Listen werden verwendet, um eine geordnete Sammlung von Strings zu speichern. Sie können verwendet werden, um eine Warteschlange, einen Stapel oder jede andere Datenstruktur zu implementieren, die einen geordneten Zugriff erfordert.
  • Sets: Gruppen werden zum Speichern einer ungeordneten Sammlung eindeutiger Zeichenfolgen verwendet. Sie können zur Implementierung eines Tag-Systems, zur Speicherung von Beziehungen zwischen Entitäten oder zur Implementierung einer mengenbasierten Datenstruktur verwendet werden.
  • Hashes: Hashes werden verwendet, um eine Sammlung von Schlüssel-Wert-Paaren zu speichern. Sie können verwendet werden, um Objekte zu speichern oder um eine einfache Datenbank zu implementieren.
  • Sorted Sets: Sortierte Mengen werden verwendet, um eine Sammlung eindeutiger Zeichenketten zu speichern, die nach einer Punktzahl sortiert sind. Sie können verwendet werden, um ein Leaderboard zu implementieren, um Daten zu speichern, die sortiert werden müssen, oder um eine auf sortierten Sets basierende Datenstruktur zu implementieren.

Für welche Anwendungen wird Redis genutzt?

Die Anwendungsfälle von Redis sind zwar stark begrenzt, jedoch sind in diesen Bereich aufgrund ihrer vorteilhaften Eigenschaften kaum zu verdrängen. Wie bereits erwähnt, wird Redis vor allem für das Caching genutzt, wie beispielsweise bei Twitter. Unter Caching versteht man ganz allgemein das Abspeichern von Zwischenständen, damit zukünftige Abfragen schneller ablaufen können. Im Fall von Twitter könnte das beispielsweise bedeuten, dass bereits geladene Profilbilder oder Tweets im Cache vorgehalten werden, damit sie bei einer erneuten Abfrage schneller vorliegen.

Diese Funktionalitäten sind vor allem auch in Chats oder Nachrichtenservices von Vorteil, da die neuen Nachrichten nahezu in Echtzeit an den User geschickt werden können. Außerdem wird diese Datenbank auch für die folgenden Anwendungen genutzt:

  • Echtzeit-Analysen: Redis wird häufig für die Verarbeitung von Echtzeit-Datenströmen, wie z. B. Web-Logs oder Social-Media-Feeds, und für Echtzeit-Analysen verwendet.
  • Nachrichtenübermittlung: Redis kann als Message Broker verwendet werden, um die Kommunikation zwischen verschiedenen Komponenten einer Anwendung zu erleichtern.
  • Sitzungsverwaltung: Redis kann zum Speichern von Benutzersitzungsdaten verwendet werden, so dass Anwendungen problemlos horizontal skaliert werden können, ohne sich um die Sitzungsaffinität zu kümmern.
  • Verwaltung von Auftragswarteschlangen: Redis kann für die Verwaltung von Hintergrund-Warteschlangen verwendet werden, so dass Anwendungen Aufträge asynchron verarbeiten und langlaufende Aufgaben auf separate Prozesse oder Maschinen auslagern können.
  • Ranglisten und Ranking-Systeme: Redis kann zum Speichern und Aktualisieren von Bestenlisten und Ranglistensystemen in Echtzeit verwendet werden, was es zu einer idealen Wahl für Multiplayer-Spiele und andere Anwendungen macht, die Ranglistenaktualisierungen in Echtzeit erfordern.

Was sind die Vorteile von Redis?

NoSQL Datenbanken haben einige Vorteile gegenüber traditionellen, relationalen Datenbanken. Dazu zählen unter anderem die bessere Performance bei großen Datenmengen und die Verteilung auf mehrere Systeme. Redis kann darüber hinaus mit den folgenden Vorteilen punkten:

  • Schnelle Erreichbarkeit durch In-Memory Speicher
  • Unterstützung für die meisten, gängigen Programmiersprachen
  • Mithilfe von verschiedenen Tools bietet Redis eine hohe Benutzerfreundlichkeit
  • Daten können auch über mehrere Cluster verteilt werden und auf anderen Computern im Arbeitsspeicher gehalten werden
  • Open-Source

Welche Nachteile hat man mit Redis?

Wie bei den meisten Datenbanken, hat auch die Nutzung von Redis einige Nachteile, die man vor dessen Implementierung erst abwägen muss. Neben der Gefahr des Datenverlustes bei Systemabsturz, spielen auch die folgenden Punkte eine Rolle:

  • Arbeitsspeicher ist ein teurer Hardware Bestandteil
  • Daten können nur über Schlüssel angesprochen werden
  • Komplexere Datensätze können nur schwierig abgebildet werden

Das solltest Du mitnehmen

  • Redis ist ein Open-Source-Speicher für Datenstrukturen im Arbeitsspeicher, der als Datenbank, Cache und Message Broker verwendet werden kann.
  • Durch seine Fähigkeit, Daten im Speicher zu speichern und darauf zuzugreifen, ist er wesentlich schneller als herkömmliche plattenbasierte Datenbanken.
  • Redis unterstützt eine breite Palette von Datenstrukturen, darunter Strings, Hashes, Sets und Listen, und ist damit vielseitig einsetzbar.
  • Die Persistenz wird durch verschiedene Mechanismen wie RDB und AOF erreicht, so dass die Daten nach einem Systemausfall wiederhergestellt werden können.
  • Redis wird aufgrund seiner hohen Leistung, Skalierbarkeit und Benutzerfreundlichkeit von verschiedenen Anwendungen und Unternehmen wie Twitter, GitHub und Craigslist eingesetzt.
  • Die Unterstützung für mehrere Programmiersprachen und die flexiblen Datenstrukturen machen Redis zu einer beliebten Wahl für Entwickler.
  • Mit der kontinuierlichen Entwicklung neuer Funktionen und Verbesserungen wird Redis wahrscheinlich ein relevantes und nützliches Tool für die Verwaltung und Speicherung von Daten in modernen Anwendungen bleiben.
Time Series Data / Zeitreihendaten

Was sind Zeitreihendaten?

Gewinnen Sie mithilfe von Analyse- und Prognosetechniken Erkenntnisse aus Zeitreihendaten. Entdecken Sie Trends und Muster!

Balkendiagramm / Bar Chart

Was ist ein Balkendiagramm?

Entdecken Balkendiagramme bei der Datenvisualisierung. Lernen Sie, wie man sie für aufschlussreiche Datenanalyse erstellt und anpasst.

Liniendiagramm / Line Chart

Was ist ein Liniendiagramm?

Meistern Sie die Kunst der Liniendiagramme: Lernen Sie in unserem Leitfaden, wie Sie Trends und Muster visualisieren können.

Data Preprocessing

Was ist Data Preprocessing?

Optimieren Sie Ihre Datenanalyse mit effektivem Data Preprocessing. Lernen Sie das Wesentliche in unserem Leitfaden zur Datenvorverarbeitung.

Kreisdiagramm / Pie Chart

Was ist ein Kreisdiagramm?

Visualisieren Sie Datenproportionen mit Kreisdiagrammen: Eine intuitive und effektive Methode, um die relative Verteilung zu verstehen.

Fuzzy Logik / Fuzzy Logic

Was ist die Fuzzy Logic?

Entdecken Sie die Leistungsfähigkeit der Fuzzy Logic in Technik und KI. Erfahren Sie, wie sie funktioniert und welche Vor- und Nachteile sie hat.

Andere Beiträge zum Thema Redis

Das Logo zeigt einen weißen Hintergrund den Namen "Data Basecamp" mit blauer Schrift. Im rechten unteren Eck wird eine Bergsilhouette in Blau gezeigt.

Verpass keine neuen Beiträge!

Wir versenden keinen Spam! Lies die Details gerne in unserer Datenschutzrichtlinie nach.

Schlagwörter:
Cookie Consent mit Real Cookie Banner