Redis Datentypen

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.

Einführung

Erfahren Sie, wie Sie den richtigen Redis-Datentyp für Ihr Projekt auswählen und warum. Redis verfügt über mehrere nützliche Datentypen, die es schwierig machen können, sich für die Verwendung zu entscheiden.

Anforderungen

  • Ein Cloud Server unter Linux (CentOS 7 oder Ubuntu 14.04)
  • Redis ist installiert und läuft. Siehe unseren Artikel über Installation von Redis auf einem ###OMPANY_NAME### Linux Cloud Server wenn nötig.

Übersicht der Redis-Datentypen

Obwohl Sie erwarten können, dass Ihr Projekt den von Ihnen verwendeten Datentyp bestimmt, kann auch das Gegenteil der Fall sein: Der Datentyp steuert das Projekt. Jeder Redis-Datentyp hat seine eigenen Stärken und Schwächen und ist für eine bestimmte Art von Projekt geeignet.

Wenn Sie Erfahrung mit verschiedenen Computersprachen haben, werden Sie mit Begriffen wie "Hash" und "String" vertraut sein. Redis verwendet diese Datentypen jedoch auf eine Weise, die Sie vielleicht nicht erwarten.

Redis ist ein "Key-Value-Speicher", nicht eine relationale Datenbank wie MySQL oder PostgreSQL. Das bedeutet, dass es Daten auf Basis von Schlüsseln speichert und sonst nichts. Die Art und Weise, wie Sie sich für die Speicherung der Daten entscheiden, hat daher einen erheblichen Einfluss auf das Verhalten Ihres Projekts und die Art und Weise, wie Sie mit den Daten umgehen.

Es gibt fünf Redis-Datentypen:

  • String
  • Hash
  • Liste
  • Set
  • Sortiertes Set

String

Zeichenketten sind der einfachste Redis-Datentyp. Eine Zeichenkette speichert Daten in Schlüssel/Wertpaaren.

Beispiel:

Key: "j doe"
Value: "07/20/2016 1:43PM"

Zeichenketten können bis zu 512 Megabyte groß sein. Es gibt ein paar Dinge, die Sie mit Zeichenketten tun können, einschließlich Schneiden, Entfernen oder Ersetzen von Daten basierend auf ihrer Position in der Zeichenkette.

Mit Redis können Sie bitweise mit Zeichenketten arbeiten, ohne dass Sie zusätzliche Bitshifting-Gymnastik in Ihrem Code benötigen. Dies macht Zeichenketten für Dinge wie einfache Zähler, die Verfolgung der Benutzeranmeldung nach ID-Nummer usw. praktisch.

Die Möglichkeit, mit einer Zeichenkette mit ihren einzelnen Bits zu arbeiten, macht sie auch zu einer kompakten Möglichkeit, Daten zu speichern. Sie können ca. 10 Millionen Single-Bit-Datenpunkte in einem 1,2 MB langen String speichern.

Hash

In Redis ist ein Hash eine Sammlung von Schlüssel/Wertpaaren. Jeder Schlüssel und Wert in einem Hash ist eine Zeichenkette.

Hashes sind eine ausgezeichnete Möglichkeit, viele kleine Datenmengen zu speichern. Obwohl ein Hash über 4 Milliarden Schlüssel/Wertpaare unterstützen kann, optimiert Redis die Effizienz von relativ kleinen Hashes (solche mit weniger als etwa 100 Feldern). Dies macht es sehr schnell, mit kleineren Hashes zu arbeiten.

Beispiel:

Key: User ID
Value:
  "username" => "j doe"
  "address" => "123 Main St"
  "city" => "Anytown, USA"
  "email" => "jdoe@example.com"
  "last login date" => "07/20/2016 1:43PM"

List

Eine Redis-Liste ist ein Schlüssel/Wertpaar, bei dem der Wert eine Sammlung von Elementen ist, geordnet nach ihrer Einfügereihenfolge. Listen werden oft von Programmierern verwendet, die ein Warteschlangensystem benötigen. Sie können Dinge aus dem Kopf oder Ende einer Liste einfügen und löschen und die Warteschlange mit Hilfe von Push oder Pop-Funktionen verschieben.

Twitter ist wahrscheinlich das bekannteste Beispiel für die Funktionalität der Redis-Liste. Die Liste "10 letzte Tweets" für einen Benutzer ist eine Liste. Neue Tweets werden an den Anfang der Liste gesetzt, und der älteste Tweet wird abgesprungen.

Beispiel:

Key: "jdoe_twitter"
Value: ["Never mind, I found it", "Did someone eat it? Rude!", "Has anyone seen my sandwich? I left it in the break room fridge."]

Der Benutzer sendet ein Update einige Minuten später. Es wird an den Anfang der Liste geschoben, und der älteste Eintrag wird am Ende abgesprungen:

Key: "jdoe_twitter"
Value: ["Oops, it wasn't mine. Sorry to whoever it belonged to, I owe you a sandwich.", "Never mind, I found it", "Did someone eat it? Rude!"]

Set

Ein Set ist eine Sammlung von eindeutigen Zeichenketten. Jede Zeichenkette kann nur einmal in einer bestimmten Menge existieren, unabhängig davon, wie oft Sie sie hinzufügen.

Redis-Sets sind sehr schnell, was sie zu einer ausgezeichneten Möglichkeit macht, die Mitgliedschaft in einem Set zu überprüfen. Es gibt auch einige interessante Zufallsfunktionen, die Sie ausführen können, wenn Sie ein Element aus einem Set nach dem Zufallsprinzip entfernen oder ersetzen möchten.

Beispiel:

Key: "administrators"
Value: ("jdoe", "alice", "bob")

Key: "banned users"
Value: ("evil_jdoe", "meanguy53", "i_am_a_troll")

Sets werden oft verwendet, um einfache Kartenspiele zu erstellen. Da jede Zeichenkette einzigartig ist, müssen Sie sich keine Sorgen machen, dass Sie versehentlich jemandem zwei Pik-As-Karten geben. Und die Zufallsfunktionen sind perfekt für Kartenspiele, so dass Sie eine zufällige Karte austeilen, die Hand mischen, Karten auf das Deck zurückbringen usw. können.

Sortiertes Sets

Ein sortiertes Set ist ein Set, bei dem die Zeichenketten nach einer von Ihnen angegebenen Punktzahl sortiert werden. Aufgrund dieser Eigenschaften werden sortierte Sets oft für Ranglisten verwendet, um die Punkte oder Level der Spieler in einem Spiel zu verfolgen.

Beispiel:

Key: "Leaderboard: Total Achievement Points"
Value: ("Jdoe" [2], "Alice" [43], "Bob" [3553])

Bob führt offensichtlich das Rudel an, hier. Die Rangliste wird auf der Website als:

Bob: 3553 AP
Alice: 43 AP
Jdoe: 21 AP

Nehmen wir an, Alice vollbringt eine Leistung von 20 Punkten. Der Wert "Alice"[63] wird dem sortierten Set hinzugefügt, und die Rangliste auf der Website wird sofort entsprechend aktualisiert:

Bob: 3553 AP
Alice: 63 AP
Jdoe: 21 AP 

Scores können wiederholt werden, aber jede Zeichenkette kann nur einmal pro Satz existieren. Wenn Sie die gleiche Zeichenkette zweimal einfügen, existiert sie nur einmal in der Menge, obwohl ihre Punktzahl auf den letzten Eintrag gesetzt wird.

Stellen Sie sich z.B. vor, Sie fügen den Wert "jdoe" in eine sortierte Menge mit einem Sortierwert von 4 ein, später fügen Sie den Wert "jdoe" ein, aber mit einem Sortierwert von 7. Der Wert "jdoe" bleibt eindeutig, aber der Sortierwert wird geändert. Dies hat also den Effekt, dass die Punktzahl für "jdoe" auf 7 aktualisiert wird.