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.
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.
Was ist Datenqualität?
Sicherstellung der Datenqualität: Bedeutung, Herausforderungen und bewährte Praktiken. Erfahren Sie, wie Sie hochwertige Daten erhalten.
Was ist die Datenimputation?
Imputieren Sie fehlende Werte mit Datenimputationstechniken. Optimieren Sie die Datenqualität und erfahren Sie mehr über die Techniken.
Was ist Ausreißererkennung?
Entdecken Sie Anomalien in Daten mit Verfahren zur Ausreißererkennung. Verbessern Sie ihre Entscheidungsfindung!
Was ist die Bivariate Analyse?
Nutzen Sie die Bivariate Analyse: Erforschen Sie Typen und Streudiagramme und nutzen Sie Korrelation und Regression.
Was ist eine RESTful API?
Erfahren Sie alles über RESTful APIs und wie sie Ihre Webentwicklungsprojekte effizienter und skalierbarer machen können.
Was sind Zeitreihendaten?
Gewinnen Sie mithilfe von Analyse- und Prognosetechniken Erkenntnisse aus Zeitreihendaten. Entdecken Sie Trends und Muster!
Andere Beiträge zum Thema Redis
- Bei Hosttest findest Du noch zusätzliche Informationen zu Redis Datenbanken.
Niklas Lang
Seit 2020 bin ich als Machine Learning Engineer und Softwareentwickler tätig und beschäftige mich leidenschaftlich mit der Welt der Daten, Algorithmen und Softwareentwicklung. Neben meiner Arbeit in der Praxis unterrichte ich an mehreren deutschen Hochschulen, darunter die IU International University of Applied Sciences und die Duale Hochschule Baden-Württemberg, in den Bereichen Data Science, Mathematik und Business Analytics.
Mein Ziel ist es, komplexe Themen wie Statistik und maschinelles Lernen so aufzubereiten, dass sie nicht nur verständlich, sondern auch spannend und greifbar werden. Dabei kombiniere ich praktische Erfahrungen aus der Industrie mit fundierten theoretischen Grundlagen, um meine Studierenden bestmöglich auf die Herausforderungen der Datenwelt vorzubereiten.