Redis speichert Schlüssel, die auf Werte zeigen. Schlüssel können beliebige Binärwerte bis zu einer angemessenen Größe sein (die Verwendung kurzer ASCII-Zeichenfolgen wird aus Gründen der Lesbarkeit und zum Debuggen empfohlen). Werte sind einer von fünf nativen Redis-Datentypen.
1.strings - eine Folge von binären sicheren Bytes mit bis zu 512 MB
2.hashes - eine Sammlung von Schlüsselwertpaaren
3.Listen - eine Sammlung von Zeichenfolgen in der Reihenfolge ihrer Einfügung
4.sets - eine Sammlung eindeutiger Zeichenfolgen ohne Bestellung
5. Sortierte Sätze - Eine Sammlung eindeutiger Zeichenfolgen, sortiert nach benutzerdefinierten Bewertungen
Saiten
Eine Redis-Zeichenfolge ist eine Folge von Bytes.
Zeichenfolgen in Redis sind binärsicher (dh sie haben eine bekannte Länge, die nicht durch spezielle Abschlusszeichen bestimmt wird), sodass Sie bis zu 512 Megabyte in einer Zeichenfolge speichern können.
Strings sind das kanonische "Key Value Store" -Konzept. Sie haben einen Schlüssel, der auf einen Wert zeigt, wobei sowohl Schlüssel als auch Wert Text- oder Binärzeichenfolgen sind.
Alle möglichen Operationen an Zeichenfolgen finden Sie unter
http://redis.io/commands/#string
Hashes
Ein Redis-Hash ist eine Sammlung von Schlüsselwertpaaren.
Ein Redis-Hash enthält viele Schlüsselwertpaare, wobei jeder Schlüssel und Wert eine Zeichenfolge ist. Redis-Hashes unterstützen komplexe Werte nicht direkt (dh ein Hash-Feld kann nicht den Wert einer Liste oder eines Satzes oder eines anderen Hashs haben), aber Sie können Hash-Felder verwenden, um auf andere komplexe Werte der obersten Ebene zu verweisen. Die einzige spezielle Operation, die Sie für Hash-Feldwerte ausführen können, ist das atomare Inkrementieren / Dekrementieren von numerischen Inhalten.
Sie können sich Redis-Hashes auf zwei Arten vorstellen: als direkte Objektdarstellung und als Möglichkeit, viele kleine Werte kompakt zu speichern.
Direkte Objektdarstellungen sind einfach zu verstehen. Objekte haben einen Namen (den Schlüssel des Hash) und eine Sammlung interner Schlüssel mit Werten. Im folgenden Beispiel finden Sie ein Beispiel.
Das Speichern vieler kleiner Werte mithilfe eines Hashs ist eine clevere Redis-Massenspeichertechnik. Wenn ein Hash eine kleine Anzahl von Feldern (~ 100) hat, optimiert Redis die Speicher- und Zugriffseffizienz des gesamten Hash. Die Optimierung des kleinen Hash-Speichers von Redis führt zu einem interessanten Verhalten: Es ist effizienter, 100 Hashes mit jeweils 100 internen Schlüsseln und Werten zu haben, als 10.000 Schlüssel der obersten Ebene, die auf Zeichenfolgenwerte verweisen. Die Verwendung von Redis-Hashes zur Optimierung Ihres Datenspeichers auf diese Weise erfordert zusätzlichen Programmieraufwand für die Verfolgung, wo Daten landen. Wenn Ihr Datenspeicher jedoch hauptsächlich auf Zeichenfolgen basiert, können Sie mit diesem seltsamen Trick viel Speicheraufwand sparen.
Alle möglichen Operationen mit Hashes finden Sie in den Hash-Dokumenten
Listen
Redis-Listen verhalten sich wie verknüpfte Listen.
Sie können Listen entweder am Kopf oder am Ende einer Liste einfügen, daraus löschen und durchlaufen.
Verwenden Sie Listen, wenn Sie Werte in der Reihenfolge pflegen müssen, in der sie eingefügt wurden. (Redis bietet Ihnen die Möglichkeit, bei Bedarf in eine beliebige Listenposition einzufügen. Ihre Einfügeleistung verschlechtert sich jedoch, wenn Sie weit von Ihrer Startposition entfernt einfügen.)
Redis-Listen werden häufig als Produzenten- / Konsumentenwarteschlangen verwendet. Fügen Sie Elemente in eine Liste ein und fügen Sie dann Elemente aus der Liste hinzu. Was passiert, wenn Ihre Verbraucher versuchen, aus einer Liste ohne Elemente zu springen? Sie können Redis bitten, auf das Erscheinen eines Elements zu warten und es Ihnen sofort zurückzugeben, wenn es hinzugefügt wird. Dies macht Redis zu einem Echtzeit-Nachrichtenwarteschlangen- / Ereignis- / Job- / Task- / Benachrichtigungssystem.
Sie können Elemente atomar von jedem Ende einer Liste entfernen, sodass jede Liste als Stapel oder Warteschlange behandelt werden kann.
Sie können auch Listen mit fester Länge (begrenzte Sammlungen) verwalten, indem Sie Ihre Liste nach jedem Einfügen auf eine bestimmte Größe zuschneiden.
Alle möglichen Vorgänge für Listen finden Sie in den Listen-Dokumenten
Sets
Redis-Sets sind Sets.
Ein Redis-Satz enthält eindeutige ungeordnete Redis-Zeichenfolgen, wobei jede Zeichenfolge nur einmal pro Satz vorhanden ist. Wenn Sie dasselbe Element zehnmal zu einem Satz hinzufügen, wird es nur einmal angezeigt. Sets eignen sich hervorragend, um träge sicherzustellen, dass mindestens einmal etwas vorhanden ist, ohne sich Gedanken über doppelte Elemente zu machen, die sich ansammeln und Platz verschwenden. Sie können dieselbe Zeichenfolge beliebig oft hinzufügen, ohne überprüfen zu müssen, ob sie bereits vorhanden ist.
Sätze sind schnell für die Überprüfung der Mitgliedschaft, das Einfügen und Löschen von Mitgliedern im Satz.
Sets haben wie erwartet effiziente Set-Operationen. Sie können die Vereinigung, Schnittmenge und Differenz mehrerer Sätze gleichzeitig erfassen. Die Ergebnisse können entweder an den Anrufer zurückgegeben oder zur späteren Verwendung in einem neuen Satz gespeichert werden.
Sets haben einen konstanten Zeitzugriff für Mitgliedschaftsprüfungen (im Gegensatz zu Listen), und Redis bietet sogar die Möglichkeit, zufällige zufällige Mitglieder zu entfernen und zurückzugeben ("ein zufälliges Element aus dem Set entfernen") oder zufällige Mitglieder ersatzlos zurückzugeben ("geben Sie mir 30 zufällige eindeutige Benutzer" ") oder mit Ersatz (" gib mir 7 Karten, aber lege die Karte nach jeder Auswahl zurück, damit sie möglicherweise erneut abgetastet werden kann ").
Alle möglichen Operationen an Sets finden Sie in den Sets-Dokumenten .
Sortierte Sets
Redis sortierte Sätze sind Sätze mit einer benutzerdefinierten Reihenfolge.
Der Einfachheit halber können Sie sich eine sortierte Menge als einen Binärbaum mit eindeutigen Elementen vorstellen. (Redis sortierte Mengen sind eigentlich Überspringlisten .) Die Sortierreihenfolge der Elemente wird durch die Punktzahl jedes Elements definiert.
Sortierte Sätze sind immer noch Sätze. Elemente dürfen nur einmal in einem Satz erscheinen. Ein Element wird aus Gründen der Eindeutigkeit durch seinen Zeichenfolgeninhalt definiert. Wenn Sie das Element "Apfel" mit der Sortierbewertung 3 einfügen und dann das Element "Apfel" mit der Sortierbewertung 500 einfügen, erhalten Sie ein Element "Apfel" mit der Sortierbewertung 500 in Ihrem sortierten Satz. Sätze sind nur basierend auf Daten eindeutig, nicht basierend auf (Score, Daten) Paaren.
Stellen Sie sicher, dass Ihr Datenmodell vom Inhalt der Zeichenfolge und nicht von der Bewertung des Elements für die Eindeutigkeit abhängt. Scores dürfen wiederholt werden (oder sogar Null), aber ein letztes Mal können Set-Elemente nur einmal pro sortiertem Set existieren. Wenn Sie beispielsweise versuchen, den Verlauf jeder Benutzeranmeldung als sortierten Satz zu speichern, indem Sie die Punktzahl als Epoche der Anmeldung und den Wert als Benutzer-ID festlegen, wird am Ende nur die letzte Anmeldungsepoche für alle Benutzer gespeichert. Ihr Set würde auf die Größe Ihrer Benutzerbasis und nicht auf die gewünschte Größe der Benutzerbasis * -Logins anwachsen.
Elemente werden Ihrem Set mit Punktzahlen hinzugefügt. Sie können die Punktzahl jedes Elements jederzeit aktualisieren. Fügen Sie das Element einfach erneut mit einer neuen Punktzahl hinzu. Scores werden durch Gleitkomma-Doubles dargestellt, sodass Sie bei Bedarf die Granularität hochpräziser Zeitstempel festlegen können. Mehrere Elemente können dieselbe Punktzahl haben.
Sie können Elemente auf verschiedene Arten abrufen. Da alles sortiert ist, können Sie nach Elementen fragen, die mit den niedrigsten Punktzahlen beginnen. Sie können nach Elementen fragen, die mit den höchsten Punktzahlen beginnen ("umgekehrt"). Sie können Elemente anhand ihrer Sortierbewertung entweder in natürlicher oder in umgekehrter Reihenfolge anfordern.
Alle möglichen Vorgänge für sortierte Sätze finden Sie in den Dokumenten zu sortierten Sätzen.