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
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
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 ...
Schlüssellänge sollte 44 Bytes nicht überschreiten;
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.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).Drei: Verwenden Sie geeignete Datentypen.
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.
Option 1: Schlüssel ist usrId, Wert ist die serialisierte Zeichenfolge des Objekts, die Datenstruktur ähnelt der folgenden:
[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] 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
Redis sollte als Cache-Daten positioniert werden und kann nicht zum Speichern großer Datenmengen verwendet werden (es kann die Datenbank nicht ersetzen);
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!