Einführung in Redis

Bei diesem Text handelt es sich um eine maschinell erstellte Übersetzung. Eine überarbeitete Version ist in Planung.

Die IONOS Community wird ab dem 01.01.2021 nicht mehr verfügbar sein. Wir laden Sie ein, uns auf Twitter oder Facebook zu folgen.

Wenn Sie Fragen zu unseren Produkten haben, finden Sie im IONOS Hilfe-Center weitere Informationen. Alternativ hilft Ihnen unser Support-Team unter @IONOS_hilft gerne weiter.

Was ist Redis?

Erfahren Sie mehr über Redis und einige Beispiele für seine Anwendung. Redis (das ist officially pronounced "REdis") ist ein Schlüsselwertspeicher, keine relationale Datenbank.

Redis wird von Unternehmen wie Twitter, Flickr, GitHub und Craigslist verwendet und ist immer unter den drei beliebtesten Docker-Bildern.

Zugehörige

  • Installieren Sie Redis auf einem Cloud Server unter Linux.

Key-Value Store

Im Gegensatz zu einer Datenbank speichert Redis Daten in einer flexiblen Struktur, ähnlich einem Dictionary oder Hash.

Wenn eine relationale Datenbank ein Bulldozer ist, ist ein Key-Value-Speicher ein Skalpell. Keines von beiden ist "besser", aber es gibt Zeiten, in denen nur das eine oder andere ausreicht. Redis ist keine Allzweck-Lösung, aber es gibt viele Situationen, in denen es das richtige Werkzeug für den Job ist.

Redis ist ein hervorragendes Werkzeug zum Speichern von Session-Caches, Warteschlangen, Ranglisten und anderen Situationen, in denen Sie große Datenmengen speichern und schnell darauf zugreifen müssen, in einer Umgebung mit hohem Volumen, aber Sie müssen die Daten nicht unbedingt für immer aufbewahren.

Datenmanagement

Da Redis seine Daten im Speicher speichert, ist es außergewöhnlich schnell. Redis schreibt nur zum Zwecke der Datenpersistenz auf die Festplatte.

Dies ermöglicht es Redis auch, große Zahlen einfach zu handhaben, was es zu einem ausgezeichneten Werkzeug für die Arbeit mit großen Datenmengen macht. Jeder Hash kann über 4 Milliarden Schlüssel-Wert-Paare aufnehmen.

Es gibt fünf Redis-Datentypen. Welche die beste Wahl für Ihr Projekt ist, erfahren Sie in unserem Artikel.

Redis Data Types.

Wann ist ein Key-Value-Shop wie Redis sinnvoll?

Die Speicherung von Daten in einer relationalen Datenbank erfordert, dass Sie eine unflexible Struktur einrichten und beim Einfügen oder Aktualisieren von Daten diese Struktur einhalten. Im Vergleich dazu ermöglicht Ihnen ein Key-Value-Store wie Redis das Einfügen von Daten mit so viel Flexibilität, wie Sie benötigen.

Als Beispiel, stellen Sie sich vor, Sie erstellen eine Website für ein lokales Deli. Der Feinkosthändler möchte über die Website Sandwichbestellungen entgegennehmen können. Sie erstellen am Frontend ein Formular, um die Daten zu erfassen und an einen Shop im Backend zu senden.

Das Feinkostgeschäft muss diese Bestellungen nicht mehr speichern, nachdem sie abgeschlossen sind. Sie wollen nur Bestellungen annehmen und Sandwiches machen, ohne viel Aufhebens.

Beispiel für eine relationale Datenbank

Um dies mit einer relationalen SQL-Datenbank zu tun, müssen Sie eine Datenbank mit Tabellen für die Brotsorte, Käse, andere Beläge usw. erstellen. Eine separate Tabelle würde die Reihenfolge enthalten.

Das Bestellformular würde alle möglichen Varianten angeben und die Daten mit einem Befehl wie folgt einfügen:

INSERT INTO sandwich_order (customer_name, customer_phone, customer_address, bread_type, meat_type, cheese_type, other_fillings_1, other_fillings_2, side_order, drink) VALUES ('J Doe', '206-555-1234', '123 Main Street', '2', '4', '3', '1', '6', '8', '11'); 

Ich frage mich, welche Art von Sandwich der Kunde will? Um den gesamten Text der Bestellung an den Sandwich-Counter des Delikates zu senden, muss Ihr Code auf alle anderen Tabellen mit Abfragen wie diese verweisen:

SELECT bread_name FROM bread_info WHERE bread_type = "2";
SELECT meat_name FROM meat_info WHERE meat_type = "4";
SELECT cheese_name FROM cheese_info WHERE cheese_type = "3";
SELECT other_filling_name FROM other_fillings_info WHERE other_fillings_id = "1";
SELECT other_filling_name FROM other_fillings_info WHERE other_fillings_id = "6";
SELECT side_order_name FROM side_order_info WHERE side_order = "8";
SELECT drink_name FROM drink_info WHERE drink = "11";

Wenn Sie eine separate Tabelle zur Speicherung von Kundeninformationen erstellen, wird dies ebenfalls zu einer weiteren Flut von SQL-Abfragen führen.

Wie Sie sehen können, kann dies schnell klobig werden. Was ist, wenn jemand eine dritte zusätzliche Füllung will? Oder zwei verschiedene Käsesorten? Was ist, wenn sie ihre Telefonnummer oder Adresse nicht angeben wollen, aber per E-Mail benachrichtigt werden wollen, dass ihr Sandwich fertig ist? Sie müssten für jede dieser Möglichkeiten Felder hinzufügen und dann diese Felder die ganze Zeit verwenden.

Ganz zu schweigen von der Verarbeitungszeit, die benötigt wird, um alle diese Werte nachzuschlagen und zurückzugeben.

Diese Art von Datenbank ist eine ausgezeichnete Lösung für viele Situationen. Aber bei Sandwich-Aufträgen, die spontan erstellt und abgerufen werden und nicht für immer gespeichert werden müssen, benötigen Sie einfach nicht die Infrastruktur einer vollständigen SQL-Datenbank.

Für dieses Feinkostgeschäft ist eine schnelle, leichte Lösung besser.

Beispiel für einen Key-Value Store

Ein Key-Value-Speicher ist viel flexibler. Alles, was Sie tun müssen, ist, ein Formular mit allen möglichen Feldern zu erstellen und die Daten an einen Redis-Hash weiterzugeben. Als Schlüssel verwenden wir Sandwich sowie den Namen und den Zeitstempel des Kunden.

Zum Beispiel:

hmset sandwich:john_doe-1467228882 bread sourdough meat ham cheese swiss side_dish chips drink lemonade

Und nehmen wir an, John's Schwester Jane gibt ein paar Sekunden später eine Bestellung auf:

hmset sandwich:jane_doe-1467229035 bread "Toasted white" meat1 Ham meat2 "Smoked turkey" cheese Gouda notes "No mayo" toppings "Lettuce and tomato"

Das Abrufen der Sandwich-Aufträge über die Befehlszeilenschnittstelle ist einfach:

 127.0.0.1:6379> hvals sandwich:john_doe-1467228882
1) "sourdough"
2) "ham"
3) "swiss"
4) "chips"
5) "lemonade"

 127.0.0.1:6379> hvals sandwich:jane_doe-1467229035
1) "Toasted white"
2) "Ham"
3) "Smoked turkey"
4) "Gouda"
5) "No mayo"
6) "Lettuce and tomato"

Redis Anwendungsfälle

Redis wird eingesetzt, wenn es um große Datenmengen geht, die spontan erfasst und abgerufen werden müssen, aber nicht unbedingt für immer aufbewahrt werden müssen - so genannte "heiße Daten".

Wenn die Verarbeitungsgeschwindigkeit ein großes Problem darstellt, dann ist Redis ein sehr guter Kandidat. Die Verwendung von Speicher durch Redis bedeutet, dass es schnell große Datenmengen durchsuchen kann, um Ergebnisse zu erhalten.

Einige Beispiele für den Einsatz von Redis sind:

  • Twitter verwendet Redis, um Tweets zu speichern. Tweets werden in einer Liste gespeichert, so dass immer die neuesten Tweets eines Benutzers angezeigt werden.
  • Ranglisten, die Ihre Punktzahl, Ihre relative Position im Bewertungssystem und systemweite Highscores anzeigen, sind mit einem Redis-Sortiment einfach zu implementieren.
  • Reddit-ähnliche Abstimmungssysteme, bei denen eingereichte Artikel auf einer Seite basierend auf der Anzahl der Upvotes oder Downvotes nach oben oder unten verschoben werden.
  • Da Redis eine einfache Möglichkeit bietet, Daten ablaufen zu lassen, ist es eine ausgezeichnete Möglichkeit, eine rollierende Zählung von etwas durchzuführen.
  • Viele Online-Spiele verwenden Redis, um die Ergebnisse und Sitzungsdaten der Benutzer zu verfolgen. Gaming ist eine ausgezeichnete Plattform für Redis, denn Geschwindigkeit ist wichtiger als Datenpersistenz.

Zugehörige

Redis Sicherheit

Bei der Verarbeitung und Speicherung von Daten jeglicher Art ist die Sicherheit immer ein großes Anliegen. Um die Grundlagen der Redis-Sicherheit zu erlernen und wie Sie Ihre Redis-Installation absichern können, lesen Sie unseren Artikel Sichern einer Redis-Installation. Dieses Tutorial enthält eine Schritt-für-Schritt-Anleitung zur grundlegenden Sicherheit "Best Practices", einschließlich der Einrichtung einer Firewall-Richtlinie, der Bindung von Redis an Localhost, der Konfiguration von AUTH und der Umbenennung oder Deaktivierung "gefährlicher" Befehle.

Verteilte Datenspeicherung und -verarbeitung mit Redis Cluster

Redis Cluster ist eine verteilte Implementierung von Redis, die die Verarbeitung auf mehrere Server verteilt. Dies kann den Durchsatz und die Stabilität einer Redis-Installation erheblich erhöhen. Redis Cluster teilt die Daten auch automatisch auf alle Server im Cluster, was die Anzahl der möglichen Fehlerpunkte reduziert und die Installation fehlertoleranter macht.

Zugehörige