Redis

Redis

┬ę Copyright Shutterstock / Ievgeniiya Ocheretna

Was ist Redis?

Redis ist ein Open-Source-Projekt f├╝r die Datenstruktur im Arbeitsspeicher, das eine verteilte, im Arbeitsspeicher hinterlegte Schl├╝sseldatenbank mit optionaler Haltbarkeit implementiert. Es unterst├╝tzt verschiedene Arten abstrakter Datenstrukturen, z. B. Strings, Listen, Maps, Sets, sortierte Sets, Hyperloglogs, Bitmaps, Streams und r├Ąumliche Indizes. Das Projekt wird haupts├Ąchlich von Salvatore Sanfilippo entwickelt und wird derzeit von Redis Labs gesponsert.

Entstehung

Redis steht f├╝r┬áREmote DIctionary Server. Das Projekt begann, als Salvatore Sanfilippo (auch bekannt als antirez, der urspr├╝ngliche Entwickler) versuchte, die Skalierbarkeit seines italienischen Startups zu verbessern, indem er einen Echtzeit-Weblog-Analysator entwickelte. Nach erheblichen Problemen bei der Skalierung bestimmter spezifischer Workloads unter Verwendung herk├Âmmlicher Datenbanksysteme begann Sanfilippo mit dem Prototyp einer ersten Proof-of-Concept-Version von Tcl.

Sp├Ąter ├╝bersetzte Sanfilippo diesen Prototyp in die Sprache C und implementierte den ersten Datentyp, das war die Liste. Nach einigen Wochen der internen Verwendung des Projekts mit Erfolg hat Sanfilippo beschlossen, es zu ├Âffnen und k├╝ndigte das Projekt den Hacker News an. Das Projekt begann sich zu etablieren, insbesondere in der Ruby-Community. GitHub und Instagram geh├Ârten zu den ersten Unternehmen, die es angenommen hatten.

Sanfilippo wurde im M├Ąrz 2010 von VMmare eingestellt. Im Mai 2013 wurde Redis von Pivotal Software (einer Ausgliederung von VMmare) gesponsert. Im Juni 2015 wurde die Entwicklung von Laps gesponsert.

Unterschiede zu anderen Datenbanksystemen

Das Projekt machte die Idee eines Systems popul├Ąr, das gleichzeitig als Speicher und Cache angesehen werden kann, wobei ein Design verwendet wird, bei dem Daten immer modifiziert und aus dem Hauptspeicher des Computers gelesen werden, aber auch in einem ungeeigneten Format auf der Festplatte gespeichert werden f├╝r den wahlfreien Zugriff auf Daten. Dies jedoch nur, um die Daten nach dem Neustart des Systems wiederherzustellen. Gleichzeitig stellt Redis ein Datenmodell bereit, das im Vergleich zu RDBMs sehr ungew├Âhnlich ist, da Benutzerbefehle keine von der Datenbank-Engine auszuf├╝hrende Abfrage beschreiben, sondern bestimmte Vorg├Ąnge, die f├╝r bestimmte abstrakte Datentypen ausgef├╝hrt werden.

Wenn Sie noch Fragen bez├╝glich Cache haben, dann k├Ânnen Sie gerne den jeweiligen Glossar dazu besuchen und sich ├╝ber das Thema informieren.

Daher m├╝ssen die Daten auf eine Weise gespeichert werden, die sp├Ąter f├╝r den schnellen Abruf geeignet ist, ohne Hilfe des Datenbanksystems in Form von Sekund├Ąrindizes, Aggregationen oder anderen ├╝blichen Merkmalen herk├Âmmlicher RDBMs. Die Implementierung nutzt Fork (system_call) intensiv, um den Prozess zu kopieren, der die Daten enth├Ąlt, sodass der ├╝bergeordnete Prozess weiterhin Clients bedient, w├Ąhrend der untergeordnete Prozess eine Kopie der Daten auf der Festplatte erstellt.

Unterst├╝tzte Sprachen

Seit Version 2.6 bietet serverseitige Lua-Skripte.

Viele Sprachen haben Redis-Bindungen auf der Clientseite, einschlie├člich: ActionScript, C, C++, C#, H├╝hnerschema, Clojure, Common Lisp, Crystal, D, Dart, Elixir, Erlang, Go, Haskell, Haxe, Io, Java, JavaScript (Node.js), Julia, Lua, OCaml, Objective-C, PHP, Perl, Pure Data, Python, R, Ruby, Rust, Scala, Smalltalk, Swift und Tcl. In diesen Sprachen gibt es mehrere Client-Softwareprogramme.

Datentypen

Redis ordnet Schl├╝ssel zu Werttypen zu. Ein wichtiger Unterschied zwischen Redis und anderen strukturierten Speichersystemen besteht darin, dass nicht nur Strings, sondern auch abstrakte Datentypen unterst├╝tzt werden:

  • Listen
  • String-S├Ątze (Sammlung nicht wiederkehrender unsortierter Elemente)
  • Sortierte String-S├Ątze (Sammlung von sich nicht wiederholenden Elementen, geordnet nach einer Flie├čkommazahl, die als Score bezeichnet wird)
  • Hash-Tabellen (bei denen Schl├╝ssel und Werte Zeichenfolgen sind)
  • HyperLogLogs (die zur ungef├Ąhren Sch├Ątzung der Kardinalit├Ątsgr├Â├če verwendet werden)
  • Stream von Eintr├Ągen mit Verbrauchergruppen
  • Geodaten durch die Implementierung der Geohash-Technik seit Version 3.2

Der Typ eines Werts bestimmt, welche Operationen (als Befehle bezeichnet) f├╝r den Wert selbst verf├╝gbar sind. Redis unterst├╝tzt atomare, serverseitige Vorg├Ąnge auf h├Âchster Ebene, wie Kreuzung, Vereinigung und Differenz zwischen S├Ątzen und Sortieren von Listen als auch S├Ątzen und sortierten S├Ątzen.

Das Redis-Modul ReJSON implementiert ECMA-404 (den JSON Data Interchange Standard) als nativen Datentyp.

Persistenz (Speicherbarkeit eines Objekts)

Redis h├Ąlt normalerweise die gesamte Datenmenge im Speicher. Versionen bis 2.4 k├Ânnen so konfiguriert werden, dass sie sogenannte virtuelle Speicher verwenden, in denen ein Teil des Datasets auf der Festplatte gespeichert ist. Diese Funktion ist jedoch veraltet. Die Persistenz wird jetzt auf zwei Arten erreicht: Eine wird als Snapshotting bezeichnet und ist ein semi-persistenter Haltbarkeitsmodus, bei dem die Datenmenge von Zeit zu Zeit asynchron vom Arbeitsspeicher auf die Festplatte ├╝bertragen wird und im RDB-Dump-Format geschrieben wird.

Seit Version 1.1 ist AOF die sichere Alternative, eine Nur-Anh├Ąnge-Datei (ein Journal), die als Operation geschrieben wird und die Datenmenge im Arbeitsspeicher ├Ąndern. Redis kann die Nur-Anh├Ąnge-Datei im Hintergrund neu schreiben, um ein unbegrenztes Wachstum des Journals zu vermeiden.

Standardm├Ą├čig schreibt es mindestens alle zwei Sekunden Daten in ein Dateisystem. Bei Bedarf stehen mehr oder weniger robuste Optionen zur Verf├╝gung. Bei einem kompletten Systemausfall mit den Standardeinstellungen w├╝rden nur wenige Sekunden an Daten verloren gehen.

Replikation

Redis unterst├╝tzt die Replikation von Masterreplikaten. Daten von einem beliebigen Redis-Server k├Ânnen auf beliebig viele Replikate repliziert werden. Ein Replikat kann ein Master f├╝r ein anderes Replikat sein. Auf diese Weise kann es eine Single-Root-Replikationsstruktur implementieren. Die Replikate k├Ânnen so konfiguriert werden, dass Schreibvorg├Ąnge akzeptiert werden, wodurch eine absichtliche und unbeabsichtigte Inkonsistenz zwischen Instanzen erm├Âglicht wird.

Die Publish/Subscribe-Funktion ist vollst├Ąndig implementiert, sodass ein Client eines Replikats einen Kanal abonnieren und einen vollst├Ąndigen Feed von Nachrichten erhalten kann, die an einem Master an einer beliebigen Stelle in der Replikationsstruktur ver├Âffentlicht werden. Die Replikation ist n├╝tzlich f├╝r die Skalierbarkeit (aber nicht f├╝r das Schreiben) oder f├╝r die Datenredundanz.

Leistung

Wenn die Haltbarkeit von Daten nicht erforderlich ist, erm├Âglicht Redis im Speicher eine gute Leistung im Vergleich zu Datenbanksystemen, die jede ├änderung auf die Festplatte schreiben, bevor eine Transaktion als festgeschrieben betrachtet wird. Es arbeitet als Einzelprozess und ist ein Single-Threaded oder Double-Threaded, wenn es die AOF (Nur-Anh├Ąnge-Datei) neu schreibt. Daher kann eine einzelne Redis-Instanz keine parallele Ausf├╝hrung von Aufgaben wie gespeicherten Prozeduren verwenden.

Clustering

Redis f├╝hrte Clustering im April 2015 mit der Version 3.0 ein. Die Clusterspezifikation implementiert eine Teilmenge von Befehlen: Alle Einzeltastenbefehle sind verf├╝gbar, Mehrtastenoperationen (Befehle, die sich auf Vereinigungen und Schnittpunkte beziehen) sind auf Schl├╝ssel beschr├Ąnkt, die zu demselben Knoten geh├Âren und Befehle, die sich auf Datenbank-Auswahl-Operationen beziehen, sind nicht verf├╝gbar.

Ein Redis-Cluster kann bis zu 1.000 Knoten skalieren, eine “akzeptable” Schreibsicherheit erreichen und den Betrieb fortsetzen, wenn einige Knoten ausfallen.

Anwendungsf├Ąlle

Aufgrund der Art des Datenbankentwurfs sind typische Anwendungsf├Ąlle unter anderem Sitzungs-Caching, Full Page Cache, Message Queue-Anwendungen, Leaderboards und das Z├Ąhlen. Gro├če Unternehmen wie Twitter nutzen Redis, Amazon Web Services bietet es in seinem Portfolio an und Microsoft bietet den Cache in Azure an.

Popularit├Ąt

Laut monatlichen Rankings von DB-Engines wird Redis h├Ąufig als die beliebteste Schl├╝sselwertdatenbank eingestuft. Es wurde auf Platz 4 der NoSQL-Datenbank in Bezug auf Benutzerzufriedenheit und Marktpr├Ąsenz basierend auf Bewertungen der Benutzer, der beliebtesten NoSQL-Datenbank in Containern und der #1 NoSQL-Datenbank von 2015 nach Ranglisten-Webseite stackshare.io eingestuft. Sie wurde im Jahr 2017 und 2018 zur beliebtesten Datenbank in der Stack Overflow Developer Survey gew├Ąhlt.

Tipp

Wenn Sie noch Fragen bez├╝glich eines Online Marketing Themas haben, dann k├Ânnen Sie gerne unseren Glossar besuchen und sich ├╝ber das Thema informieren, wo Sie noch speziell Fragen haben.


Sie haben noch Fragen?

Kontaktieren Sie uns

Kostenloser SEO-Check der OSG


Weitere Inhalte