suchen
HeimDatenbankRedisFassen Sie Redis-Datentypen und Nutzungsszenarien zusammen

Dieser Artikel vermittelt Ihnen relevantes Wissen über Datentypen in Redis. Er stellt hauptsächlich Probleme im Zusammenhang mit allgemeinen Datentyp-Nutzungsszenarien vor.

Fassen Sie Redis-Datentypen und Nutzungsszenarien zusammen

Empfohlenes Lernen: Redis-Lerntutorial

Redis-Datentypen und Nutzungsszenarien

  • Redis-Datentypen und Nutzungsszenarien
    Im Vergleich zu anderen KV-Datenbanken ist es eines der Hauptmerkmale von Redis unterstützt umfangreiche Datentypen. Es unterstützt insgesamt 5 Datentypen. Diese 5 Datentypen, ihre Verwendungsszenarien und ihre interne Implementierung werden im Folgenden einzeln vorgestellt.

  • string
    Einführung: Der String-Typ ist der grundlegendste Datentyp in Redis, der am häufigsten verwendete Datentyp und wird von vielen Spielern sogar als einziger Datentyp von Redis verwendet. Der String-Typ ist in Redis binärsicher, was bedeutet, dass der String-Wert sich um den Binär-String und nicht um das spezifische Format kümmert. Sie können ihn zum Speichern von Strings im JSON-Format oder JPEG-Bildformat verwenden.

  • Ermitteln Sie die Länge der Zeichenfolge.

  • Fügen Sie Inhalt an die Zeichenfolge an der Inhalt einer Reihe von Zeichenfolgen in Stapeln

  • Gemeinsame Befehle: set, get, decr, incr, mget usw.

  • Anwendungsszenarien:

  • (1) Speichern Sie den Wert eines bestimmten Felds in MySQL.
  • Entwerfen Sie den Schlüssel als Tabellenname: Primärschlüsselname: Primärschlüsselwert: Feldname.

    (2) Speichern Sie Objekte.
  • Der Zeichenfolgentyp unterstützt jedes Format. Zeichenfolgen werden am häufigsten zum Speichern von JSON- oder anderen objektformatierten Zeichenfolgen verwendet. (In diesem Szenario wird empfohlen, den Hash-Datentyp zu verwenden.)
  • set user:id:1 '[{"id":1,"name":"zj","email":"156577812@qq.com"},{"id":1,"name":"zj","email":"156577812@qq.com"}]'

    (3) Generieren Sie eine automatisch inkrementierende ID.

    Wenn der Wert des Zeichenfolgentyps von Redis die Form einer Ganzzahl hat, kann Redis ihn als eine behandeln Ganzzahl für die automatische Inkrementierung (incr) und automatische Dekrementierung (decr). Da alle Redis-Vorgänge atomar sind, besteht kein Grund zur Sorge über Transaktionsprobleme, die auftreten können, wenn mehrere Clients eine Verbindung herstellen.

Hash

Einführung: Hash speichert die Zuordnung zwischen Strings und String-Werten. Hash speichert verschiedene Attribute des Objekts in der Karte und kann nur bestimmte Attribute des Objekts lesen/aktualisieren. Auf diese Weise können einige zu lange Eigenschaften in Ruhe gelassen werden. Darüber hinaus können verschiedene Module nur die Eigenschaften aktualisieren, die ihnen wichtig sind, ohne dass es aufgrund der Parallelität zu Überschreibkonflikten kommt.

Häufig verwendete Befehle: hget, hset, hgetall usw.

Anwendungsszenarien:
  • Strukturierte Daten wie Benutzerinformationen speichern. In Memcached oder CKV müssen wir Benutzerinformationen wie Spitzname, Alter, Geschlecht, Punkte usw. zuerst serialisieren und als Zeichenfolgenwert speichern. Zu diesem Zeitpunkt müssen wir eines der Elemente ändern Normalerweise müssen wir Folgendes tun: Nachdem der Wert herausgenommen und deserialisiert wurde, wird der Wert eines Elements geändert, dann serialisiert und wieder gespeichert. Dies erhöht nicht nur den Overhead, sondern ist auch nicht für Situationen geeignet, in denen gleichzeitige Vorgänge möglich sind (z. B. erfordern zwei gleichzeitige Vorgänge eine Änderung von Punkten). Mit der Hash-Struktur von Redis können Sie nur einen bestimmten Attributwert ändern, genau wie beim Aktualisieren eines Attributs in der Datenbank. Wie unten gezeigt: Schlüssel ist die Benutzer-ID, Wert ist eine Karte, der Schlüssel dieser Karte ist der Attributname des Mitglieds und Wert ist der Attributwert. Auf diese Weise können die Daten geändert und darauf zugegriffen werden direkt über den Schlüssel seiner internen Karte (Redis Der Schlüssel der internen Karte wird als Feld bezeichnet), dh die entsprechenden Attributdaten können über Schlüssel (Benutzer-ID) + Feld (Attributbezeichnung) manipuliert werden Speichern Sie Daten, und es kommt nicht zu einer Serialisierung und gleichzeitigen Änderungskontrolle. Hier ist jedoch zu beachten, dass Redis eine Schnittstelle (hgetall) zum direkten Abrufen aller Attributdaten bereitstellt. Wenn jedoch viele Mitglieder der internen Karte vorhanden sind, muss die gesamte interne Karte durchlaufen werden Dies ist ein Single-Thread-Modell von Redis. Der Durchlaufvorgang kann zeitaufwändig sein und möglicherweise überhaupt nicht auf Anfragen anderer Clients reagieren. Dies erfordert besondere Aufmerksamkeit.
  • Kann zum Erstellen von Indizes verwendet werden. Beispielsweise müssen Benutzerobjekte manchmal zusätzlich zur ID auch nach Namen abgefragt werden. Sie können beim Einfügen des Benutzerobjekts einen Hash erstellen (set user:101{"id":101). ,“name“: „calvin“}), fügen Sie übrigens einen Eintrag in diesen Hash ein (hset user:name:id calvin 101). Zu diesem Zeitpunkt wird calvin als Schlüssel im Hash mit einem Wert von verwendet 101. Wenn Sie nach Namen abfragen, verwenden Sie hgetuser:name:id calvin, um die ID aus dem Schlüssel namens calvin abzurufen. Wenn Sie mehrere Indizes verwenden müssen, um ein bestimmtes Datenelement zu finden, können Sie einen Hash-Schlüssel verwenden, um die Verwendung mehrerer Zeichenfolgenschlüssel zum Speichern von Indexwerten zu vermeiden.

HINCRBY kann auch zur Implementierung von idmaker verwendet werden. Im Vergleich zum String-Typ-IDmaker benötigt jeder Typ einen Schlüssel, und der Hash-Typ benötigt nur einen Schlüssel.

Der Hash-Datentyp hat den Vorteil, dass er beim Speichern der oben genannten Datentypen flexibler und schneller ist. Insbesondere ist es beim Speichern des String-Typs erforderlich, Strings im JSON-Format zu konvertieren und zu analysieren Wenn keine Konvertierung erforderlich ist, ist Hash in Bezug auf den Speicheraufwand immer noch im Vorteil.

Implementierungsmethode:

Der dem Wert entsprechende Redis-Hash ist eigentlich eine HashMap. Hier gibt es zwei verschiedene Implementierungen. Wenn der Hash weniger Mitglieder hat, verwendet Redis eine eindimensionale Array-ähnliche Methode, um ihn kompakt zu speichern, anstatt ihn zu verwenden Die Codierung des entsprechenden Werts redisObject ist zipmap. Wenn die Anzahl der Mitglieder zunimmt, wird sie automatisch in eine echte HashMap konvertiert.

  • Liste

Einführung:
Liste ist eine nach Einfügungsreihenfolge sortierte Zeichenfolgenliste. Neue Elemente können am Kopf und am Ende eingefügt werden (doppelt verknüpfte Listenimplementierung, der Zeitaufwand für das Hinzufügen von Elementen an beiden Enden). ist O (1)). Wenn beim Einfügen eines Elements der Schlüssel nicht vorhanden ist, erstellt Redis eine neue verknüpfte Liste für den Schlüssel. Wenn alle Elemente in der verknüpften Liste entfernt werden, wird der Schlüssel auch aus Redis entfernt.

Häufig verwendete Befehle: lpush, rpush, lpop, rpop, lrange usw.

Anwendungsszenarien:

Verschiedene Listen, wie Twitters Follow-Liste, Fan-Liste usw., Rankings der neuesten Nachrichten, Kommentare zu jedem Artikel usw. können ebenfalls mithilfe der Listenstruktur von Redis implementiert werden.

Nachrichtenwarteschlange: Sie können die PUSH-Operation von Listen verwenden, um Aufgaben in Listen zu speichern, und dann verwendet der Arbeitsthread die POP-Operation, um die Aufgaben zur Ausführung herauszunehmen. Die Nachrichtenwarteschlange verfügt hier über keinen Bestätigungsmechanismus. Was passiert, wenn der Verbraucher die Aufgabe an Pop übergibt und abstürzt, bevor er sie beendet? Eine Lösung besteht darin, einen zusätzlichen sortierten Satz hinzuzufügen und ihn gleichzeitig an die Liste und den sortierten Satz zu senden. Nachdem der Benutzer die Aufgabe abgeschlossen hat, muss er ZREM verwenden in der sortierten Menge und entfernen Sie regelmäßig die nicht abgeschlossenen Aufgaben aus der sortierten Menge und fügen Sie sie wieder in die Liste ein. Ein anderer Ansatz besteht darin, für jeden Arbeiter eine zusätzliche Liste hinzuzufügen, RPopLPush zu verwenden, wenn Aufgaben angezeigt werden, den Job gleichzeitig in die eigene Liste des Arbeiters aufzunehmen und ihn nach Abschluss mit LREM zu entfernen. Wenn die Clusterverwaltung (z. B. Zookeeper) feststellt, dass der Worker gestorben ist, wird der Inhalt der Worker-Liste an die Hauptliste zurückgegeben.

Mit LRANGE kann die Paging-Funktion von Listeninhalten problemlos realisiert werden.

Vorgang zum Abrufen der neuesten N-Daten: Mit LPUSH wird eine Inhalts-ID eingefügt und als Schlüsselwort am Anfang der Liste gespeichert. LTRIM wird verwendet, um die Anzahl der Elemente in der Liste auf maximal 5000 zu begrenzen. Wenn die Datenmenge, die der Benutzer abrufen muss, diese Cache-Kapazität überschreitet, muss die Anfrage an die Datenbank gesendet werden.

Implementierungsmethode:

Die Redis-Liste ist als bidirektionale verknüpfte Liste implementiert, die die umgekehrte Suche und das Durchlaufen unterstützen kann, was die Bedienung erleichtert. Allerdings bringt sie bei vielen Implementierungen in Redis einen gewissen zusätzlichen Speicheraufwand mit sich, einschließlich des Sendens Pufferwarteschlangen usw. Diese Datenstruktur wird auch verwendet.

  • Set

Einführung: Es handelt sich um ein ungeordnetes Set. Die Elemente im Set haben keine Reihenfolge und werden nicht wiederholt. Durch das Einfügen doppelter Elemente in ein Set werden diese automatisch entfernt.

Häufig verwendete Befehle:

sadd, spop, smembers, sunion usw.

Anwendungsszenarien:

Einige Listen müssen dedupliziert werden, und Set bietet eine wichtige Schnittstelle, um festzustellen, ob sich ein Mitglied in einer Set-Sammlung befindet, was eine Liste nicht bieten kann.

Einige kollektive Daten können in der Weibo-Anwendung gespeichert werden. Beispielsweise können alle Follower eines Benutzers in einer Sammlung gespeichert werden, und alle seine Fans können in einer Sammlung gespeichert werden. Redis bietet auch Operationen wie Schnittmenge, Vereinigung und Differenz für Sammlungen, die sehr praktisch sein können, um Funktionen wie gemeinsame Aufmerksamkeit, gemeinsame Vorlieben und Freunde zweiten Grades zu implementieren. Für alle oben genannten Sammlungsoperationen können Sie auch unterschiedliche Befehle verwenden Auswahlen Geben Sie die Ergebnisse an den Client zurück oder speichern Sie sie in einer neuen Sammlung. Ein weiteres Beispiel: QQ verfügt über eine soziale Funktion namens „Freunde-Tags“. Sie können Ihre Freunde markieren, z. B. „große Schönheit“, „Tycoon“, „Ouba“ usw. Hier können Sie auch die Tags jedes Benutzers in einer Sammlung speichern .

Wenn Sie wissen möchten, wie viele bestimmte registrierte Benutzer oder IP-Adressen eine bestimmte Seite besucht haben, können Sie dies tun: SADD page:day1: Um die Anzahl bestimmter Benutzer zu ermitteln, verwenden Sie SCARD page:day1:. Möchten Sie testen, ob ein bestimmter Benutzer diese Seite besucht hat? SISMEMBER page:day1:.

Implementierungsmethode:

Die interne Implementierung von set ist eine HashMap, deren Wert immer null ist. Tatsächlich wird sie durch die Berechnung des Hash schnell sortiert. Aus diesem Grund kann set feststellen, ob sich ein Mitglied im Set befindet.

  • Sortierter Satz

Einführung: Sortierter Satz. Im Vergleich zum Satz wird die Bewertung des Elements auch bereitgestellt, wenn das Element in den Satz eingefügt wird, und es kann automatisch nach der Bewertung sortiert werden.

Allgemeine Befehle:

zadd, zrange, zrem, zcard usw.

Verwendungsszenarien:

Speichern Sie eine geordnete und nicht duplizierte Sammlungsliste. Beispielsweise kann die öffentliche Timeline von Twitter mit der Veröffentlichungszeit als Ergebnis gespeichert werden , damit Sie die Zeit automatisch nach Zeit sortieren können.

Sie können beispielsweise eine gewichtete Warteschlange erstellen, bei der die Punktzahl für normale Nachrichten 1 und die Punktzahl für wichtige Nachrichten 2 beträgt. Dann kann der Arbeitsthread die Arbeitsaufgaben in der umgekehrten Reihenfolge der Punktzahl abrufen. Priorisieren Sie wichtige Aufgaben.

Verarbeitung abgelaufener Elemente: Verwenden Sie die Unix-Zeit als Schlüssel, um die Liste nach Zeit sortiert zu halten. Rufen Sie current_time und time_to_live ab, um die schwierige Aufgabe, abgelaufene Artikel zu finden, abzuschließen. Eine weitere Hintergrundaufgabe verwendet ZRANGE...WITHSCORES, um abgelaufene Einträge abzufragen und zu löschen.

Implementierungsmethode:

Der sortierte Redis-Satz verwendet intern HashMap und SkipList, um die Speicherung und Reihenfolge von Daten sicherzustellen, während die Skip-Liste alle Mitglieder speichert Die in der HashMap gespeicherte Punktzahl kann eine höhere Sucheffizienz erzielen und ist relativ einfach zu implementieren.

Empfohlenes Lernen: Redis-Video-Tutorial

Das obige ist der detaillierte Inhalt vonFassen Sie Redis-Datentypen und Nutzungsszenarien zusammen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme
Dieser Artikel ist reproduziert unter:CSDN. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen
Ist Redis eine SQL- oder NoSQL -Datenbank? Die Antwort erklärteIst Redis eine SQL- oder NoSQL -Datenbank? Die Antwort erklärteApr 18, 2025 am 12:11 AM

RedisiscassifizedasanosqldatabaseBecauseituseSakey-valuedatamodelinSteAfThetitionalrelationalDatabasemodel

Redis: Verbesserung der Anwendungsleistung und SkalierbarkeitRedis: Verbesserung der Anwendungsleistung und SkalierbarkeitApr 17, 2025 am 12:16 AM

Redis verbessert die Anwendungsleistung und die Skalierbarkeit, indem sie Daten zwischengespeichert und verteilte Verriegelung und Datenpersistenz implementiert. 1) Cache -Daten: Verwenden Sie Redis, um häufig auf Daten zugegriffen, um die Geschwindigkeit des Datenzugriffs zu verbessern. 2) Verteilte Schloss: Verwenden Sie Redis, um verteilte Sperren zu implementieren, um die Sicherheit des Betriebs in einer verteilten Umgebung zu gewährleisten. 3) Datenpersistenz: Stellen Sie die Datensicherheit durch RDB- und AOF -Mechanismen sicher, um den Datenverlust zu verhindern.

Redis: Erforschen des Datenmodells und der StrukturRedis: Erforschen des Datenmodells und der StrukturApr 16, 2025 am 12:09 AM

Das Datenmodell und die Struktur von Redis umfassen fünf Haupttypen: 1. String: Verwendet, um Text oder binäre Daten zu speichern, und unterstützt Atomoperationen. 2. Liste: Bestellte Elementssammlung, geeignet für Warteschlangen und Stapel. 3. SET: Ungeordnete einzigartige Elemente, unterstützende Set -Operation. V. 5. Hash Table (Hash): Eine Sammlung von Schlüsselwertpaaren, die zum Speichern von Objekten geeignet sind.

Redis: Klassifizierung des DatenbankansatzesRedis: Klassifizierung des DatenbankansatzesApr 15, 2025 am 12:06 AM

Die Datenbankmethoden von Redis umfassen In-Memory-Datenbanken und Schlüsselwertspeicher. 1) Redis speichert Daten im Speicher und liest und schreibt schnell. 2) Es wird Schlüsselwertpaare verwendet, um Daten zu speichern, unterstützt komplexe Datenstrukturen wie Listen, Sammlungen, Hash-Tabellen und geordnete Sammlungen, die für Caches und NoSQL-Datenbanken geeignet sind.

Warum Redis verwenden? Vorteile und VorteileWarum Redis verwenden? Vorteile und VorteileApr 14, 2025 am 12:07 AM

Redis ist eine leistungsstarke Datenbanklösung, da sie eine schnelle Leistung, umfangreiche Datenstrukturen, hohe Verfügbarkeit und Skalierbarkeit, Persistenzfunktionen und eine breite Palette von Ökosystemunterstützung bietet. 1) Extrem schnelle Leistung: Die Daten von Redis werden im Speicher gespeichert und verfügt über extrem schnelle Lesen und Schreibgeschwindigkeiten, die für Anwendungen mit hoher Parallelität und niedriger Latenz geeignet sind. 2) Reiche Datenstruktur: Unterstützt mehrere Datentypen wie Listen, Sammlungen usw., die für eine Vielzahl von Szenarien geeignet sind. 3) hohe Verfügbarkeit und Skalierbarkeit: Unterstützt die Master-Slave-Replikation und den Clustermodus, um eine hohe Verfügbarkeit und horizontale Skalierbarkeit zu erzielen. 4) Persistenz und Datensicherheit: Die Datenpersistenz werden durch RDB und AOF erreicht, um die Integrität und Zuverlässigkeit der Daten zu gewährleisten. 5) Weites Ökosystem und Unterstützung der Gemeinschaft: mit einem riesigen Ökosystem und einer aktiven Gemeinschaft.

NoSQL verstehen: Schlüsselmerkmale von RedisNoSQL verstehen: Schlüsselmerkmale von RedisApr 13, 2025 am 12:17 AM

Zu den wichtigsten Merkmalen von Redis gehören Geschwindigkeit, Flexibilität und Reich Datenstrukturunterstützung. 1) Geschwindigkeit: Redis ist eine In-Memory-Datenbank, und Lese- und Schreibvorgänge sind fast augenblicklich und für Cache und Sitzungsverwaltung geeignet. 2) Flexibilität: Unterstützt mehrere Datenstrukturen wie Zeichenfolgen, Listen, Sammlungen usw., die für die komplexe Datenverarbeitung geeignet sind. 3) Unterstützung bei der Datenstruktur: Bietet Zeichenfolgen, Listen, Sammlungen, Hash -Tabellen usw., die für unterschiedliche Geschäftsanforderungen geeignet sind.

Redis: Identifizierung seiner primären FunktionRedis: Identifizierung seiner primären FunktionApr 12, 2025 am 12:01 AM

Die Kernfunktion von Redis ist ein Hochleistungs-In-Memory-Datenspeicher- und Verarbeitungssystem. 1) Hochgeschwindigkeitsdatenzugriff: Redis speichert Daten im Speicher und bietet Lese- und Schreibgeschwindigkeit auf Mikrosekunden. 2) Reiche Datenstruktur: Unterstützt Zeichenfolgen, Listen, Sammlungen usw. und passt an eine Vielzahl von Anwendungsszenarien. 3) Persistenz: Behalten Sie Daten an, um durch RDB und AOF zu diskutieren. 4) Abonnement veröffentlichen: Kann in Nachrichtenwarteschlangen oder Echtzeit-Kommunikationssystemen verwendet werden.

Redis: Ein Leitfaden für beliebte DatenstrukturenRedis: Ein Leitfaden für beliebte DatenstrukturenApr 11, 2025 am 12:04 AM

Redis unterstützt eine Vielzahl von Datenstrukturen, darunter: 1. String, geeignet zum Speichern von Einzelwertdaten; 2. Liste, geeignet für Warteschlangen und Stapel; 3.. SET, verwendet zum Speichern nicht duplikatischer Daten; V. 5. Hash -Tabelle, geeignet zum Speichern von Objekten oder strukturierten Daten.

See all articles

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
1 Monate vorBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
1 Monate vorBy尊渡假赌尊渡假赌尊渡假赌
Will R.E.P.O. Crossplay haben?
1 Monate vorBy尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

WebStorm-Mac-Version

WebStorm-Mac-Version

Nützliche JavaScript-Entwicklungstools

SublimeText3 Linux neue Version

SublimeText3 Linux neue Version

SublimeText3 Linux neueste Version

Herunterladen der Mac-Version des Atom-Editors

Herunterladen der Mac-Version des Atom-Editors

Der beliebteste Open-Source-Editor

SublimeText3 Englische Version

SublimeText3 Englische Version

Empfohlen: Win-Version, unterstützt Code-Eingabeaufforderungen!

SAP NetWeaver Server-Adapter für Eclipse

SAP NetWeaver Server-Adapter für Eclipse

Integrieren Sie Eclipse mit dem SAP NetWeaver-Anwendungsserver.