Heim >Datenbank >Redis >Detaillierte Erläuterung der Nutzungsszenarien von 5 Datenstrukturen in Redis

Detaillierte Erläuterung der Nutzungsszenarien von 5 Datenstrukturen in Redis

藏色散人
藏色散人nach vorne
2020-08-19 13:24:582722Durchsuche

Die folgende Spalte des Redis-Tutorials stellt Ihnen die Verwendungsszenarien der 5 Datenstrukturen in Redis vor: String, Hash, List, Set und Sorted Set Friends in Not Du kannst darauf verweisen!

Detaillierte Erläuterung der Nutzungsszenarien von 5 Datenstrukturen in Redis

1. Redis Datenstruktur-Nutzungsszenarien

Ich habe ursprünglich das Buch Redisbook gelesen und bin bereits mit den Grundfunktionen von Redis vertraut. Ich habe letzte Woche begonnen, den Quellcode von Redis zu lesen. Das aktuelle Ziel besteht darin, die Datenstruktur von Redis vollständig zu verstehen. Wir alle wissen, dass es in Redis 5 Datenstrukturen gibt. Was sind also die Verwendungsszenarien jeder Datenstruktur?

String – String
Hash – Wörterbuch
List – Liste
Set – Menge
Sorted Set – geordnete Menge

Lassen Sie uns kurz ihre jeweiligen Verwendungsszenarien erklären:

1.String – String

String-Datenstruktur ist ein einfacher Schlüssel -value-Typ. Der Wert kann nicht nur String, sondern auch eine Zahl sein (wenn der Zahlentyp durch Long dargestellt werden kann, ist die Codierung ein Integer-Typ und die anderen werden in sdshdr als Strings gespeichert. ). Mit dem Strings-Typ können die aktuellen Funktionen von Memcached vollständig und effizienter realisiert werden. Sie können auch die geplante Persistenz von Redis (Sie können zwischen RDB-Modus und AOF-Modus wählen), Betriebsprotokolle, Replikation und andere Funktionen nutzen. Redis bietet nicht nur die gleichen Get-, Set-, Incr-, Decr- und anderen Vorgänge wie Memcached, sondern auch die folgenden Vorgänge:

1.LEN niushuai:O(1)获取字符串长度
2.APPEND niushuai redis:往字符串 append 内容,而且采用智能分配内存(每次2倍)
3.设置和获取字符串的某一段内容
4.设置及获取字符串的某一位(bit)
5.批量设置一系列字符串的内容
6.原子计数器
7.GETSET 命令的妙用,请于清空旧值的同时设置一个新值,配合原子计数器使用

1.Hash - Dictionary
In Memcached packen wir häufig einige strukturierte Informationen in eine Hashmap, die als gespeichert wird ein Zeichenfolgenwert (normalerweise im JSON-Format) nach der Serialisierung auf dem Client, z. B. Spitzname, Alter, Geschlecht, Punkte usw. des Benutzers. Wenn Sie zu diesem Zeitpunkt eines der Elemente ändern müssen, müssen Sie normalerweise die Zeichenfolge (JSON) herausnehmen, sie dann deserialisieren, den Wert eines bestimmten Elements ändern und sie dann in eine Zeichenfolge (JSON) serialisieren und speichern es zurück. Das einfache Ändern eines Attributs, um so viele Dinge zu tun, muss sehr teuer sein und ist nicht für Situationen geeignet, in denen gleichzeitige Vorgänge möglich sind (z. B. müssen zwei gleichzeitige Vorgänge Punkte ändern). Mit der Hash-Struktur von Redis können Sie nur einen bestimmten Attributwert ändern, genau wie beim Aktualisieren eines Attributs in der Datenbank.

                                                                Ich glaube, dass jeder, der Datenstrukturkenntnisse erlernt hat, in der Lage sein sollte, deren Struktur zu verstehen. Mithilfe der Listenstruktur können wir problemlos Funktionen wie das Ranking der neuesten Nachrichten (z. B. TimeLine von Sina Weibo) implementieren. Eine weitere Anwendung von List ist die Nachrichtenwarteschlange. Sie können die *PUSH-Operation von List verwenden, um Aufgaben in der Liste zu speichern, und dann verwendet der Arbeitsthread die POP-Operation, um die Aufgabe zur Ausführung herauszunehmen. Redis bietet auch eine API zum Betreiben eines bestimmten Elementsegments in der Liste. Sie können ein bestimmtes Elementsegment in der Liste direkt abfragen und löschen.

Eine Kombination eindeutiger Werte. Einige Sammeldaten können mithilfe der von Redis bereitgestellten Set-Datenstruktur gespeichert werden. In der Weibo-Anwendung können beispielsweise alle Follower eines Benutzers in einer Sammlung und alle Fans in einer Sammlung gespeichert werden. Da Redis sehr benutzerfreundlich ist und Operationen wie Schnittmenge, Vereinigung und Differenz für Sammlungen bereitstellt, ist es für Sie sehr praktisch, Funktionen wie gemeinsame Aufmerksamkeit, gemeinsame Präferenzen und Freunde zweiten Grades zu implementieren Sie können auch verschiedene Befehle verwenden, um auszuwählen, ob die Ergebnisse an den Client zurückgegeben oder in einer neuen Sammlung gespeichert werden sollen.

存储、读取、修改用户属性
1.Sortierter Satz – Geordneter Satz

Im Vergleich zu Sets fügt Sorted Sets den Elementen im Set eine Gewichtungsparameterbewertung hinzu, sodass die Elemente im Set entsprechend der Bewertung geordnet angeordnet werden können. Beispielsweise speichert ein Sorted Set die Noten der Für die gesamte Klasse kann der festgelegte Wert die Studenten-ID-Nummer des Mitschülers sein, und die Punktzahl kann sein/ihr Testergebnis sein, sodass beim Einfügen der Daten in die Sammlung bereits eine natürliche Sortierung durchgeführt wurde. Darüber hinaus können Sorted Sets auch zum Erstellen einer gewichteten Warteschlange verwendet werden. Beispielsweise beträgt die Bewertung normaler Nachrichten 1 und die Bewertung wichtiger Nachrichten 2. Anschließend kann der Arbeitsthread die Arbeitsaufgaben in umgekehrter Reihenfolge abrufen der Partitur. Priorisieren Sie wichtige Aufgaben.

1. Elemente mit Gewichten, wie z. B. die Benutzer-Score-Rangliste eines Spiels

2 Eine relativ komplexe Datenstruktur, die im Allgemeinen nicht in allzu vielen Szenarien verwendet wird

1. Veröffentlichungssystem

Pub/Sub bedeutet wörtlich „Veröffentlichen und Abonnieren“ für einen bestimmten Schlüsselwert. Wenn ein Schlüsselwert veröffentlicht wird, erhalten alle Clients, die ihn abonnieren die entsprechende Meldung. Die offensichtlichste Verwendung dieser Funktion ist die eines Echtzeit-Messaging-Systems, z. B. für gewöhnliche Sofort-Chats, Gruppen-Chats und andere Funktionen.

1. Transaktionen – Transaktionen

Wer hat gesagt, dass NoSQL keine Transaktionen unterstützt (z. B. eine Reihe von Befehlen, die zur Ausführung mit EXEC übermittelt werden und der Server während der Ausführung ausfällt), dann einige Befehle werden ausgeführt, der Rest wird nicht ausgeführt), aber diese Transaktionen bieten weiterhin die Grundfunktion der Befehlspaketierung und -ausführung (wenn kein Problem mit dem Server vorliegt, kann sichergestellt werden, dass eine Reihe von Befehlen nacheinander ausgeführt werden). , mit Zwischenschritt Es werden weitere Client-Befehle zur Ausführung eingefügt. Redis bietet auch eine Überwachungsfunktion. Sie können einen Schlüssel überwachen und dann Transaktionen ausführen. Wenn während dieses Vorgangs der Wert von Watched geändert wird, werden die Transaktionen erkannt und die Ausführung verweigert.

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der Nutzungsszenarien von 5 Datenstrukturen in Redis. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:segmentfault.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen