Welche Methode wird beim Redis-Schlüsselwertdesign verwendet?
Unregelmäßigkeiten bei der Verwendung von Redis
Die in Redis gespeicherten Schlüsselnamen sind nicht standardisiert und relativ willkürlich;
-
Redis wird als Repository verwendet, es besteht die Gefahr eines Datenverlusts, und da besteht die Gefahr eines Datenverlusts ist kein Nachladeplan;
Redis speichert Schlüssel, ohne die Ablaufzeit festzulegen, was wiederum zum Absturz des Dienstes führt.
-
Redis speichert eine große Anzahl großer Daten Schlüssel, die viel Netzwerkbandbreite beanspruchen, wenn die Anwendung sie erhält, und das Löschen kann leicht zu einer Überlastung führen.
Unsachgemäße Verwendung des Redis-Clients, was zu einer Zeitüberschreitung für andere Client-Verbindungen führen kann ist falsch und der Verbindungspool wird nicht verwendet. Eine große Anzahl von Verbindungswiederholungen führt zu einer Erschöpfung der Systemportressourcen , wie z. B. die Verwendung von Tasten* oder Flushall-Befehlen während der Hauptgeschäftszeiten;
Empfehlungen und Vorschläge für Geschäftsszenarien zur Redis-Nutzung
Szenarien mit hoher Parallelität: Hotspot-Daten-Caching. Es kann die Gesamtreaktionsgeschwindigkeit des Systems verbessern und die IO-Druck der Datenbank;
Zeitlich begrenztes Szenario: Verwenden Sie den Redis-Expire-Befehl, um den Ablauf und die Erneuerung der Sitzung, den Mobiltelefon-Verifizierungscode usw. festzulegen.
Mit der Redis-Liste und den geordneten Satzdatenstrukturen können verschiedene implementiert werden komplexe Ranking-Anwendungen
Datenerfassungsoperationen: Verwenden Sie Redis-Listen, -Sets, sortierte Sets, um Datenberechnungen wie Schnittmenge, Vereinigung, Differenzmenge usw. zu erleichtern.
Kontinuierliches Einchecken: Sie können Redis verwenden Die Bitmap-Datenstruktur implementiert anmeldebezogene Dienste.
Zähler: Verwenden Sie die Befehle Redis incr und incrby, um API-Rufnummernstatistiken, API-Strombegrenzungen und andere Szenarien zu implementieren Schreibverteilungssperre, typische Open-Source-Komponenten wie Redisson;
So entwerfen Sie einen eleganten Schlüssel
Man kann sagen, dass bei der Online-Leistungsoptimierung von Redis häufig ein unangemessenes Schlüsseldesign die Hauptursache des Problems ist Im Wesentlichen haben die meisten Schüler, wie ich persönlich gesehen habe, fast keine Vorstellung vom Schlüsseldesign bei der Verwendung von Redis, da das Szenario, das die meisten Schüler verwenden, Schlüssel/Wert ist und die entsprechenden Daten Die Struktur ist Zeichenfolge Schlüssel/Zeichenfolge Studenten, die ein tieferes Verständnis von Redis haben, wissen möglicherweise, dass das Schlüsseldesign beim Speichern so kurz wie möglich sein sollte und es am besten ist, ein Gefühl für die Hierarchie in der Mitte zu haben. Fahren Sie am besten fort mit: Segmentierung ...
Wie können wir also einen eleganteren Schlüssel entwerfen? Lassen Sie uns anhand der tatsächlichen Erfahrungen des Herausgebers und der aufgetretenen Fallstricke ausführlich darüber sprechen.
1 Befolgen Sie die folgenden Best-Practice-Konventionen. Befolgen Sie das Grundformat: [Firmenname]: [id];
Schlüssellänge sollte 44 Bytes nicht überschreiten;
In Bezug auf die oben genannten Vorschläge hat dies die folgenden Vorteile:
Lesbar Starke Flexibilität, z Wenn wir beispielsweise eine solche Schlüsselstruktur entwerfen, order:user:10, wissen wir auf einen Blick, dass es sich um einen Schlüssel handelt, der sich auf Benutzeraufträge bezieht.
ist praktisch für Wartung und Verwaltung, verschiedene Anwendungen oder verschiedene Unternehmen verwenden unterschiedliche Das Präfix ist sehr praktisch für die Suche und Lokalisierung von Schlüsseln in visuellen Client-Tools oder Befehlszeilen.
-
Vermeiden Sie Schlüsselkonflikte und vermeiden Sie Cache-Schlüsselkonflikte, die dadurch verursacht werden, dass mehrere Personen während der Verwendung Werte wie userId als Schlüssel verwenden
Verwenden Sie den String-Typ als Schlüssel. Die zugrunde liegende Codierung umfasst int, embstr und raw, wodurch die Speichernutzung effektiv reduziert werden kann. Mit Embstr können Zeichenfolgen verarbeitet werden, die kleiner als 44 Bytes sind und gleichzeitig weniger Speicher beanspruchen, da kontinuierlicher Speicherplatz verwendet wird Geben Sie Schlüssel ein. Es wird empfohlen, dass die Anzahl der Elemente weniger als 1000 beträgt.
- Schlüssel selbst ist zu groß: ein Schlüssel vom Typ String, sein Wert beträgt 5 MB; : ein Schlüssel vom Typ ZSET, seine Anzahl an Mitgliedern beträgt 10.000; 2. Schaden von BigKey: Netzwerküberlastung wo es sich befindet, um langsamer zu werden.
- Redis-Blockierung
-
-
Operationen an Hash, Liste, Zset usw. mit vielen Elementen werden lange dauern und dazu führen, dass der Hauptthread blockiert wird; die CPU-Auslastung in die Höhe schnellen lassen, was Auswirkungen auf die Redis-Instanz und andere Anwendungen auf der Maschine hat
Nutzung: Der von redis-cli bereitgestellte Parameter --bigkeys kann alle Schlüssel durchlaufen und analysieren und die gesamten statistischen Informationen des Schlüssels und des Top-1-Big-Keys aller Daten zurückgeben Schreiben Sie ein Programm und verwenden Sie scan, um alle Schlüssel in Redis zu scannen, und verwenden Sie strlen, hlen und andere Befehle, um die Länge des Schlüssels zu bestimmen (SPEICHERNUTZUNG wird hier nicht empfohlen). Verwenden Sie Tools von Drittanbietern wie Redis. Rdb-Tools analysiert RDB-Snapshot-Dateien und analysiert umfassend die Speichernutzung
Drei: Verwenden Sie geeignete Datentypen.
- Wie oben erwähnt, verwenden viele Studenten, die Redis zum ersten Mal verwenden, für viele Geschäftsszenarien eine einfache Struktur von Schlüssel/Wert Denken Sie nicht tief darüber nach, ob dies sinnvoll ist oder ob dies in Zukunft zu damit verbundenen Leistungsproblemen führen wird.
Für dieses Problem müssen wir grundsätzlich ein tiefgreifendes Verständnis und eine Beherrschung der häufig verwendeten Datentypen haben Redis. Auf dieser Grundlage können wir Lösungen für verschiedene Geschäftsszenarien entwerfen.
Lassen Sie uns darüber nachdenken, wie Daten wie Benutzerobjektlisten zwischengespeichert werden.
Option 1: Schlüssel ist usrId, Wert ist die serialisierte Zeichenfolge des Objekts, die Datenstruktur ähnelt der folgenden:
- Vorteile: einfacher Zugriff, einfach und grob, nur JSON erforderlich Beim Zugriff einfach in das Objekt konvertieren. Nachteile: Datenkopplung, nicht flexibel genug. Sobald das Objekt Felder hinzufügt oder löscht, sind die Kosten für die Cache-Rekonstruktion sehr hoch Cache-Benutzer-ID-Liste, die Datenstruktur ist wie folgt; 3: Verwenden Sie eine Hash-Struktur, um Objekte zwischenzuspeichern. Die Daten lauten wie folgt: Die unterste Ebene verwendet eine Ziplist, die wenig Platz einnimmt und flexibel auf alle Felder des Objekts zugreifen kann ist relativ kompliziert;
[Empfohlen] Erwärmen Sie den Cache. Vor dem Zugriff auf Daten sollte der Cache vorgewärmt werden, um zu verhindern, dass eine große Anzahl von Anforderungen direkt in die Datenspeicherschicht gelangt. Entsprechend den Geschäftsbedingungen sollten heiße und kalte Daten aufgeteilt und heiße Daten vorgewärmt werden. Wie Lizenzinformationen, Apikey usw.;
- [Empfohlen] Verwenden Sie gemeinsam den lokalen Cache. Obwohl lokales Caching in einer verteilten Architektur die Stabilität und Geschwindigkeit des Datenzugriffs verbessern kann, muss es mit Vorsicht verwendet werden, um die Einführung zustandsbehafteter Serverknoten zu vermeiden. Vermeiden Sie, dass lokale Caches übermäßig Ressourcen des Anwendungsservers belegen, was zu Abstürzen des Anwendungsknotens führt Der Redis-Server kann Pipeline- oder andere Batch-Betriebsmethoden verwenden.
[Empfohlen] Große Liste, Satz, Hash, große Speichermenge. Beim Abrufen einer großen Anzahl von Elementen kommt es zu einer großen Verzögerung, die die Ausführung anderer Befehle blockiert. Es wird empfohlen, es in mehrere kleine Listen, Sätze oder Hash-Tabellen aufzuteilen
- Verwenden Sie GeschäftsspezifikationenOb es sich um Redis oder andere in der Entwicklung verwendete Middleware handelt, wenn es um Entwicklung und Verwendung geht, ist es am besten, einen Satz zu entwickeln Diese Spezifikation sollte von den meisten Entwicklern im Voraus erkannt und in der Praxis getestet werden. Sobald sie als Spezifikation festgelegt ist, sollte sie zu einer täglichen Regel werden, die internen Entwicklern als Leitfaden dient sind wie folgt:
Redis sollte als Cache-Daten positioniert werden und kann nicht zum Speichern großer Datenmengen verwendet werden (es kann die Datenbank nicht ersetzen);
- Redis eignet sich für Szenarien mit mehr Lesevorgängen und weniger Schreibvorgängen, z B. Hochfrequenz-Schreib- und Niederfrequenz-Abfrageszenarien, wird die Verwendung nicht empfohlen.
-
Sie sollten die Trennung von heißen und kalten Daten in Betracht ziehen, Redis für hochfrequente Geschäftsabfragen verwenden und die Verwendung der Datenbank für niederfrequente Abfragen in Betracht ziehen Das Risiko eines Datenverlusts in Redis besteht darin, dass Sie die Daten aus der Datenbank automatisch laden und in Redis zwischenspeichern müssen.
Verwenden Sie O(N)-Befehle mit Vorsicht, z. B. list, set, hash Strukturen, hgetall, lrange, smembers, zrange usw. sind nicht unbrauchbar, indem stattdessen hscan und sscan verwendet werden.
Das obige ist der detaillierte Inhalt vonWelche Methode wird beim Redis-Schlüsselwertdesign verwendet?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen





Der Redis -Cluster -Modus bietet Redis -Instanzen durch Sharding, die Skalierbarkeit und Verfügbarkeit verbessert. Die Bauschritte sind wie folgt: Erstellen Sie ungerade Redis -Instanzen mit verschiedenen Ports; Erstellen Sie 3 Sentinel -Instanzen, Monitor -Redis -Instanzen und Failover; Konfigurieren von Sentinel -Konfigurationsdateien, Informationen zur Überwachung von Redis -Instanzinformationen und Failover -Einstellungen hinzufügen. Konfigurieren von Redis -Instanzkonfigurationsdateien, aktivieren Sie den Cluster -Modus und geben Sie den Cluster -Informationsdateipfad an. Erstellen Sie die Datei nodes.conf, die Informationen zu jeder Redis -Instanz enthält. Starten Sie den Cluster, führen Sie den Befehl erstellen aus, um einen Cluster zu erstellen und die Anzahl der Replikate anzugeben. Melden Sie sich im Cluster an, um den Befehl cluster info auszuführen, um den Clusterstatus zu überprüfen. machen

So löschen Sie Redis -Daten: Verwenden Sie den Befehl Flushall, um alle Schlüsselwerte zu löschen. Verwenden Sie den Befehl flushdb, um den Schlüsselwert der aktuell ausgewählten Datenbank zu löschen. Verwenden Sie SELECT, um Datenbanken zu wechseln, und löschen Sie dann FlushDB, um mehrere Datenbanken zu löschen. Verwenden Sie den Befehl del, um einen bestimmten Schlüssel zu löschen. Verwenden Sie das Redis-Cli-Tool, um die Daten zu löschen.

Um eine Warteschlange aus Redis zu lesen, müssen Sie den Warteschlangenname erhalten, die Elemente mit dem Befehl LPOP lesen und die leere Warteschlange verarbeiten. Die spezifischen Schritte sind wie folgt: Holen Sie sich den Warteschlangenname: Nennen Sie ihn mit dem Präfix von "Warteschlange:" wie "Warteschlangen: My-Queue". Verwenden Sie den Befehl LPOP: Wischen Sie das Element aus dem Kopf der Warteschlange aus und geben Sie seinen Wert zurück, z. B. die LPOP-Warteschlange: my-queue. Verarbeitung leerer Warteschlangen: Wenn die Warteschlange leer ist, gibt LPOP NIL zurück, und Sie können überprüfen, ob die Warteschlange existiert, bevor Sie das Element lesen.

Die Verwendung der REDIS -Anweisung erfordert die folgenden Schritte: Öffnen Sie den Redis -Client. Geben Sie den Befehl ein (Verbschlüsselwert). Bietet die erforderlichen Parameter (variiert von der Anweisung bis zur Anweisung). Drücken Sie die Eingabetaste, um den Befehl auszuführen. Redis gibt eine Antwort zurück, die das Ergebnis der Operation anzeigt (normalerweise in Ordnung oder -err).

Um die Operationen zu sperren, muss die Sperre durch den Befehl setNX erfasst werden und dann den Befehl Ablauf verwenden, um die Ablaufzeit festzulegen. Die spezifischen Schritte sind: (1) Verwenden Sie den Befehl setNX, um zu versuchen, ein Schlüsselwertpaar festzulegen; (2) Verwenden Sie den Befehl Ablauf, um die Ablaufzeit für die Sperre festzulegen. (3) Verwenden Sie den Befehl Del, um die Sperre zu löschen, wenn die Sperre nicht mehr benötigt wird.

Der beste Weg, um Redis -Quellcode zu verstehen, besteht darin, Schritt für Schritt zu gehen: Machen Sie sich mit den Grundlagen von Redis vertraut. Wählen Sie ein bestimmtes Modul oder eine bestimmte Funktion als Ausgangspunkt. Beginnen Sie mit dem Einstiegspunkt des Moduls oder der Funktion und sehen Sie sich die Codezeile nach Zeile an. Zeigen Sie den Code über die Funktionsaufrufkette an. Kennen Sie die von Redis verwendeten Datenstrukturen. Identifizieren Sie den von Redis verwendeten Algorithmus.

Verwenden Sie das Redis-Befehlszeilen-Tool (REDIS-CLI), um Redis in folgenden Schritten zu verwalten und zu betreiben: Stellen Sie die Adresse und den Port an, um die Adresse und den Port zu stellen. Senden Sie Befehle mit dem Befehlsnamen und den Parametern an den Server. Verwenden Sie den Befehl Hilfe, um Hilfeinformationen für einen bestimmten Befehl anzuzeigen. Verwenden Sie den Befehl zum Beenden, um das Befehlszeilenwerkzeug zu beenden.

Auf CentOS -Systemen können Sie die Ausführungszeit von LuA -Skripten einschränken, indem Sie Redis -Konfigurationsdateien ändern oder Befehle mit Redis verwenden, um zu verhindern, dass bösartige Skripte zu viele Ressourcen konsumieren. Methode 1: Ändern Sie die Redis -Konfigurationsdatei und suchen Sie die Redis -Konfigurationsdatei: Die Redis -Konfigurationsdatei befindet sich normalerweise in /etc/redis/redis.conf. Konfigurationsdatei bearbeiten: Öffnen Sie die Konfigurationsdatei mit einem Texteditor (z. B. VI oder Nano): Sudovi/etc/redis/redis.conf Setzen Sie die LUA -Skriptausführungszeit.
