Heim  >  Artikel  >  Datenbank  >  Eingehende Analyse der Datenstruktur in Redis und Gespräch über Anwendungsszenarien

Eingehende Analyse der Datenstruktur in Redis und Gespräch über Anwendungsszenarien

青灯夜游
青灯夜游nach vorne
2022-01-18 09:51:451912Durchsuche

Dieser Artikel vermittelt Ihnen ein tiefgreifendes Verständnis der Datenstrukturen in Redis und zeigt die Anwendungsszenarien dieser Datenstrukturen. Ich hoffe, er wird Ihnen hilfreich sein!

Eingehende Analyse der Datenstruktur in Redis und Gespräch über Anwendungsszenarien

Redis-Datentypen und Anwendungsszenarien

Redis ist ein Schlüsselwertspeichersystem, das in der Sprache ANSI C geschrieben ist. Der Schlüsseltyp ist string. [Verwandte Empfehlungen: Redis Video Tutorial

sortedset(zset) geordneter Satztyp

  • Hash-Typ

    • Ungewöhnlicher Datentyp
    • Bitmap-Bitmap-Typ
    • Geo-Standorttyp
    • Stream-Typ
    Hinweis
  • Befehle in Redis ignorieren die Groß-/Kleinschreibung (SET SET), Schlüssel ignorieren die Groß-/Kleinschreibung nicht (NAME Name)

    • String-String-Typ
    • Die String-Funktion von Redis drückt drei Arten von Werten aus: String, Integer, Floating Punktnummer 100.01 ist eine sechsstellige Zeichenfolge.

    • Allgemeine Befehle

  • Befehlsname

    Befehlsformat

    Befehlsbeschreibung

Eingehende Analyse der Datenstruktur in Redis und Gespräch über Anwendungsszenarien

set

Schlüsselwert festlegen

Wert zuweisen

getSchlüssel abrufenWert abrufengetsetSchlüsselwert festlegenWert abrufen und Wert zuweisenmsetMSET key1 value1 key2 value2 .. keyN valueNMehrere einstellen MGET KEY1 KEY2 .. KEYNEXPIRE Schlüsselsekundenappend key valueappend value to the tailstrlenstrlen keystring length abrufensetnxsetnx key. valuewh en-Wert Zuweisung verwenden, wenn dies nicht der Fall ist existierendecrdecr-Tastedie Zahl dekrementierendecrbydecrby-Taste dekrementierendie angegebene ganze Zahl verringern

Anwendungsszenarien

  • 1. Objekt-Cache

  • 3. Einzelwert-Cache: Erhöhung der Anzahl, kann zur Implementierung einer optimistischen Sperrüberwachung (Transaktion) verwendet werden.

  • 4. Setnx wird für verteilte Sperren verwendet. Es kann verwendet werden, um verteilte Sperren zu implementieren.

  • Beispiele für gängige Methoden

  • dockerRedis:0>keys *
    dockerRedis:0>append testName 2
    "1"
    dockerRedis:0>exists testName
    "1"
    dockerRedis:0>append testName " 1234"
    "6"
    dockerRedis:0>get testName
    "2 1234"
    dockerRedis:0>set testName1 "testName1"
    "OK"
    dockerRedis:0>get testName1
    "testName1"
    dockerRedis:0>getset testName2 "testName2"
    null
    dockerRedis:0>get testName2
    "testName2"
    dockerRedis:0>strlen testName
    "6"
    dockerRedis:0>set incrTest "10"
    "OK"
    dockerRedis:0>incr incrTest
    "11"
    dockerRedis:0>get incrTest
    "11"
    dockerRedis:0>decr incrTest
    "10"
    dockerRedis:0>decrby incrTest 5
    "5"
    dockerRedis:0>mset set01 1 set02 2 set03 3
    "OK"
    dockerRedis:0>mget set01 set02 set03
    1) "1"
    2) "2"
    3) "3"
  • Listentyp

    Der Listentyp kann geordnete und wiederholbare Elemente in der Nähe des Kopfes oder Endes speichern. Die maximale Anzahl von Elementen in der Liste beträgt 2^ 32-1 (4 Milliarden)

Allgemeine Befehle

Befehlsname

BefehlsformatBefehlsbeschreibung

Werte zu ihren entsprechenden Werten. mget
Gibt den Wert aller (eines oder mehrerer) angegebenen Schlüssel zurück EXPIRE
Legen Sie die Ablaufzeit (Sekunden) eines Schlüssels fest appendkey
Schlüsselwert festlegen N P
lpushlpush-Taste v1 v2 v3... Liste einfügen von die linkelpop lpop-TasteVon der linken Seite der Liste herausnehmenrpushrpush-Taste v1 v2 v3...Von der rechten Seite in die Liste einfügenrpoprpop-TasteNehmen Sie es von der rechten Seite der Liste heraus.lrange key start endGibt die Elemente im angegebenen Intervall in der Liste zurück. Das Intervall wird durch start und end angegeben.lsetlset key index valueSetzt das Element an der Indexposition der Liste auf Der Wert von valuerpoplpushrpoplpush key1 key2Pop aus der rechten Seite der Liste key1 heraus und fügen Sie ihn in die linke Seite der Liste key2 einrpushx rpushx keyfügt den ein Wert am Ende des Listenwertsbrpopblpop-Schlüssel wird von der rechten Seite der Liste entfernt. Er blockiert, wenn die Liste leer ist. Sie können das maximale Blockierungs-Timeout in Sekunden festlegen lindex-Schlüsselwertltrim-Schlüsselanfang Endebrpoplpush1, Stapel (Stack) =LPUSH + LPOP2, Warteschlange (Warteschlange) =LPUSH + RPOP3, Blocking MQ (Blocking queue) = LPUSH + BRPOP4, Benutzerliste, Produktliste, BewertungslisteSet-Set-TypSet: Die maximale Anzahl von Mitgliedern in einem ungeordneter, eindeutiger Elementsatz ist 2^32 - 1
Auf der linken Seite der Liste können Sie die maximale Blockierungszeit in Sekunden festlegen, wenn die Liste leer ist
lindex
Erhalten Sie das Element mit dem tiefgestellten Index in der Liste. Der Index beginnt bei 0. index ltrim
Beschneiden Sie die Liste und behalten Sie nur den Anfangs- bis Endbereich bei end brpoplpush
Poppt von der rechten Seite der Liste „key1“ und fügt es in die linke Seite der Liste „key2“ ein, wodurch key1 key2 blockiert wird Wert Wert in die Liste beim Wert vor oder nach Pivot einfügen
Anwendungsszenarien
Allgemeine Befehle
Befehlsname Befehlsformat Befehlsbeschreibung

sadd

sadd Wert1 Wert2 ....
  • Speichern Sie Elemente im Sammlungsschlüssel, wenn das Element vorhanden ist. Ignorieren Sie, wenn der Schlüssel nicht existiert, erstellen Sie einen neuen

    SMEMBERS
  • SMEMBERS Key

    Get alle Elemente in der Sammlung srandmember key count
  • wählt count-Elemente aus dem Set-Schlüssel aus, und die Elemente werden nicht aus dem Schlüssel gelöscht. Löschen

  • scard

    Scard-Key
Ermitteln Sie die Anzahl der Elemente im Set-Key

sismember

SIsMember Key Mitgliedsmitglied, ob das Mitgliedselement im SET -Taste umfasst Differenz mehrerer Mengen

sunion

Anwendungsszenarien

  • WeChat-Lotterie-Applet

  • Weibo-Likes, Sammlungen, Tags

  • Weibo- und WeChat-Folgemodelle

  • E-Commerce-Produktscreening

zset geordneter Sammlungstyp

SortedSet(ZSet) geordnete Menge: Die Elemente selbst sind ungeordnet und werden nicht wiederholt Jedem Element ist eine Punktzahl zugeordnet, die nach Punktzahl sortiert werden kann.

sunion key1 key2 key3 Finden Sie die Vereinigung mehrerer Mengen
BefehlsnameBefehlsbeschreibungzaddzadd Key Score1 Member1 Score2 Member2 ...Elemente mit Scores zum geordneten Set-Schlüssel hinzufügenzremzrem Key mem1 mem2 ....Elemente aus dem geordneten Set-Schlüssel entfernenzcardzcard keyErmitteln Sie die Anzahl der Elemente im geordneten Satz.zcountzcount key min max.Gib die Anzahl der Elemente im Satz zurück, deren Bewertungswert im [min,max] liegt. Intervallzincrbyzincrby Schlüsselinkrementmitglied ist die Punktzahl des Elementmitglieds in der geordneten Menge Schlüssel plus Inkrementzscorezscore Schlüsselmitglied gibt die Punktzahl des Elementmitglieds in der geordneten Menge zurück set keyzrankzrank key memberRufen Sie die Rangfolge der Mitglieder im Set ab (von klein bis groß nach Punktzahl)zrangezrange key start endRufen Sie die Elemente der geordneten Gruppe ab Setze den Schlüssel vom Start-Index zum Stopp-Index in positiver Reihenfolge zrevrankzrevrank SchlüsselmitgliedErhalte die Rangfolge der Mitglieder im Satz (von groß nach klein nach Punktzahl)zrevrange zrevrange Schlüssel Start EndeErhalten Sie den bestellten Set-Schlüssel in umgekehrter Reihenfolge von Start-Index zu Stopp-Index-ElementenAnwendungsszenarien

Klick-Rankings, Verkaufs-Rankings, Aufmerksamkeits-Rankings

Hash-Typ
  • Redis-Hash ist eine Zuordnungstabelle für Felder und Werte vom Typ Zeichenfolge, die Felder und eine Zuordnung von Feldwerten bereitstellt. Jeder Hash kann 2^32-1 Schlüssel-Wert-Paare (mehr als 4 Milliarden) speichern.

VorteileEingehende Analyse der Datenstruktur in Redis und Gespräch über Anwendungsszenarien

  • 1. Ähnliche Daten werden für die Speicherung klassifiziert und integriert, was die Datenverwaltung erleichtert

    • 2 Im Vergleich zu String-Operationen verbraucht es weniger Speicher und CPU

    • 3. Im Vergleich zum String-Speicher platzsparender

    • Nachteile
  • 1 Die Ablauffunktion kann nicht für Felder, sondern nur für Schlüssel verwendet werden

    • 2. Die Redis-Cluster-Architektur ist nicht geeignet für den großflächigen Einsatz

    • Allgemeine Befehle

Befehlsname

BefehlsformatBefehlsbeschreibunghsethset-SchlüsselfeldwertSpeichern Sie den Schlüsselwert von ein Hash-Tabellenschlüsselhmsethmset-Schlüssel Feld1 Wert1 Feld2 Wert2Speichern Sie mehrere Schlüssel-Wert-Paare in einem Hash-Tabellenschlüsselhgethget-SchlüsselfeldÜberprüfen Sie, ob ein Feld vorhanden isthmgethmget Schlüsselfeld1 Feld2...Erhalten Sie einen Feldwerthsetnxhsetnx-SchlüsselfeldwertSpeichern Sie den Schlüsselwert eines nicht vorhandenen Hash-Tabellenschlüsselshexistshexist Schlüssel abgelegtBeurteilen Sie, ob abgelegt vorhanden ist hincrby hincrby Schlüsselfeld inkrementiertangegebenes Feld automatisch inkrementierthlenhlen SchlüsselErhalten Sie die Anzahl der FelderAnwendungsszenarioBitpos-Schlüssel valueGibt den ersten als Bitwert festgelegten Indexwert zurück
Objektcache Warenkorbbedienung
Bitmap-Bitmap-Typ Bitmap führt Bitoperationen aus, um den Wert oder Status eines Elements durch ein Bit darzustellen, und der Schlüssel ist das entsprechende Element selbst. Bitmap selbst spart erheblich Speicherplatz. Allgemeine Befehle bei Offset (kann nur 0 sein oder 1). ...

bitop

    bitop und[or/xor/not] destkey key [key ...]
  • Führen Sie logische Operationen für mehrere Schlüssel aus und speichern Sie sie. Geben Sie destkey ein

  • Anwendungsszenarien

    • 1. Benutzer checken jeden Monat ein, die Benutzer-ID ist der Schlüssel, und das Datum wird um 1 verschoben, um den Check-in anzuzeigen.
    • 2. Zählen Sie aktive Benutzer, das Datum ist der Schlüssel und die Benutzer-ID ist Offset 1, um den Online-Status des Benutzers anzuzeigen. Das Datum ist der Schlüssel und die Benutzer-ID ist der Offset 1, was bedeutet, dass Redis den Standort online verwendet Information. Offiziell in Redis3.2 verwendet. Hauptsächlich unter Verwendung von Z-Reihenfolge-Kurven, Base32-Kodierung und Geohash-Algorithmus

    geoadd

    geoadd Schlüssel Längengrad Breitengrad Mitgliedsname 1 Längengrad 1 Breitengrad 1 Mitgliedsname 2 Längengrad 2 Breitengrad 2...

    Geografische Koordinaten hinzufügenGeodistEntfernung zwischen Mitgliedern berechnen Georadius nach Mitglied Schlüsselelementwert Einheit Anzahl Anzahl aufsteigend Finden Sie Mitglieder in der Nähe basierend auf Mitglied GeohashGeohash-Schlüssel Mitgliedsname 1 Mitgliedsname 2...Gibt die Standard-Geohash-Zeichenfolge zurück Anwendungsszenario Stream-Datenstromtyp Serialisierte Generierung von Nachrichten-IDs Nachrichtendurchlauf Blockierendes und nicht blockierendes Lesen von Nachrichten Gruppenverbrauch von Nachrichten Verarbeitung unvollendeter Nachrichten Überwachung der Nachrichtenwarteschlange
    geopos geopos Schlüssel Mitgliedsname 1 Mitgliedsname 2... Zurück Breiten- und Längengrad des Mitglieds
    Geodist Schlüsselelement 1 Mitglied 2 Einheit

    Georadius nach Mitglied
    1. Geografischen Standort aufzeichnen 2. Entfernung berechnen 3 . „Personen in der Nähe“ finden
    Stream ist eine neue Datenstruktur, die nach Redis 5.0 hinzugefügt wurde und für persistente Nachrichtenwarteschlangen verwendet wird. Erfüllt fast alle Anforderungen der Nachrichtenwarteschlange, einschließlich:

    Jeder Stream hat einen eindeutigen Namen, der der Schlüssel von Redis ist. Er wird automatisch erstellt, wenn der Befehl xadd zum ersten Mal zum Anhängen einer Nachricht verwendet wird. Anwendungsszenarien: Verwendung der Nachrichtenwarteschlange

    Weitere Informationen zum Thema Programmierung finden Sie unter:

    Einführung in die Programmierung

    ! !

Das obige ist der detaillierte Inhalt vonEingehende Analyse der Datenstruktur in Redis und Gespräch über Anwendungsszenarien. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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