


Lassen Sie uns über Cache-Penetration, Cache-Lawine, Cache-Aufschlüsselung und Cache-Konsistenz in Redis sprechen
Dieser Artikel gibt Ihnen einen kurzen Überblick über Cache-Penetration, Cache-Lawine, Cache-Aufschlüsselung und Cache-Konsistenz in Redis und stellt die Lösungen für Cache-Penetration und Cache-Lawine vor. Ich hoffe, dass er für alle hilfreich ist!
Cache-Lawine
Der Cache fällt gleichzeitig in einem großen Bereich aus, und nachfolgende Anforderungen fallen auf die Datenbank, was dazu führt, dass die Datenbank einer großen Anzahl von Anforderungen in kurzer Zeit nicht standhalten kann Einbruch
Auf der E-Commerce-Homepage beträgt beispielsweise die Schlüsselablaufzeit aller Homepages alle 12 Stunden und wird um 12 Uhr mittags aktualisiert, wenn um 0:00 Uhr ein Flash-Sale-Event stattfindet und eine große Anzahl von Benutzern hereinströmt , aber alle Schlüssel im Cache sind zu diesem Zeitpunkt ungültig. Wenn die Datenbank dies nicht verarbeiten kann, wird sie direkt blockiert. Wenn Redis ausfällt, wird eine große Anzahl von Anforderungen an MySQL gesendet. wodurch es aufhängt. [Verwandte Empfehlungen: Redis-Video-Tutorial]
Lösung
In diesem Fall sollten Sie der Ablaufzeit jedes Schlüssels einen zufälligen Wert hinzufügen, um eine große Anzahl von Schlüsselfehlern gleichzeitig zu vermeiden ist eine Redis-Cluster-Bereitstellung. Hotspot-Daten können an verschiedene Bibliotheken verteilt werden.
Vorher: Versuchen Sie, die hohe Verfügbarkeit des Redis-Clusters sicherzustellen, Maschinenausfallzeiten so schnell wie möglich auszugleichen und eine geeignete Strategie zur Speicherbeseitigung zu wählen
-
In Bearbeitung: lokaler Ehcache-Cache + Hystrix-Strombegrenzung und Downgrade Um einen MySQL-Absturz zu vermeiden
Danach: Die vom Redis-Persistenzmechanismus gespeicherten Daten werden so schnell wie möglich im Cache wiederhergestellt.
Cache-Penetration
Eine große Anzahl angeforderter Schlüssel ist nicht im Cache vorhanden. Beispielsweise erstellt ein Hacker einen Schlüssel, der nicht im Cache vorhanden ist, und initiiert eine große Anzahl von Anfragen, was zu einer großen Anzahl von Anfragen führt in die Datenbank fallen.
Lösung
Zunächst sollten Sie eine grundlegende Überprüfung der Eingabeparameter durchführen und illegale Parameter direkt abfangen. Fragen Sie beispielsweise ab, ob die Datenbank-ID nicht kleiner als 0 sein darf, überprüfen Sie das E-Mail-Format usw.
Wenn beides Der Cache und die Datenbank sind Wenn die Daten eines bestimmten Schlüssels nicht gefunden werden können, wird der Schlüssel in Redis geschrieben, der Wert ist null und die Ablaufzeit wird festgelegt, um zu verhindern, dass die nächste Anforderung auf die Datenbank fällt.
Durch den Bloom-Filter kann der Bloom-Filter sehr bequem feststellen, ob bestimmte Daten in massiven Daten vorhanden sind. Alle möglichen angeforderten Werte können im Bloom-Filter gespeichert werden, und wenn die Anfrage eintrifft, wird zunächst festgestellt, ob die Anfrage gesendet wurde vom Benutzer im Bloom-Filter vorhanden ist, und ihn direkt abfangen, wenn er nicht vorhanden ist.
Cache-Aufschlüsselung
Cache-Aufschlüsselung bezieht sich auf einen Schlüssel-Hotspot, der ständig große Parallelität aufweist. Wenn der Schlüssel fehlschlägt, durchbricht die kontinuierliche große Parallelität den Cache und fordert ihn direkt an Datenbank
Cache-Konsistenz
Wenn eine starke Konsistenz erforderlich ist, kann der Cache nicht verwendet werden, da keine starke Konsistenz garantiert werden kann, sondern nur eine eventuelle Konsistenz.
- Löschen Sie zuerst den Cache und aktualisieren Sie dann die Datenbank.
Wenn die Datenbankaktualisierung fehlschlägt, sind in der Datenbank noch alte Daten vorhanden, Redis ist leer und die Daten sind nicht inkonsistent. Wenn sie leer sind, werden sie gelöscht Zur Abfrage in die Datenbank übertragen und dann im Cache aktualisieren.
- Treten Sie der Warteschlange bei und führen Sie Serialisierungsvorgänge aus.
Löschen Sie zuerst den Cache und aktualisieren Sie dann die Datenbank. In Szenarien mit hoher Parallelität können auch Probleme auftreten, z. B. wenn der Cache gelöscht wird und die Datenbank zu diesem Zeitpunkt nicht aktualisiert wird in und findet Wenn Redis leer ist, wird die Datenbank gelesen und dann auf Redis aktualisiert. Wenn zu diesem Zeitpunkt der zwischengespeicherte Thread gelöscht und dann die Datenbank aktualisiert wird, sind die Datenbank- und Redis-Daten zu diesem Zeitpunkt inkonsistent. Der Datenaktualisierungsvorgang kann in die Warteschlange gestellt und serialisiert werden. Der Vorgang wird nicht ausgeführt, wird jedoch im Allgemeinen nicht empfohlen, da er die Effizienz verringert.
Weitere Kenntnisse zum Thema Programmierung finden Sie unter: Einführung in die Programmierung! !
Das obige ist der detaillierte Inhalt vonLassen Sie uns über Cache-Penetration, Cache-Lawine, Cache-Aufschlüsselung und Cache-Konsistenz in Redis sprechen. 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

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

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.

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 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.

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.

Redis unterstützt als Messing Middleware Modelle für Produktionsverbrauch, kann Nachrichten bestehen und eine zuverlässige Lieferung sicherstellen. Die Verwendung von Redis als Message Middleware ermöglicht eine geringe Latenz, zuverlässige und skalierbare Nachrichten.

Zu den Schritten zum Starten eines Redis -Servers gehören: Installieren von Redis gemäß dem Betriebssystem. Starten Sie den Redis-Dienst über Redis-Server (Linux/macOS) oder redis-server.exe (Windows). Verwenden Sie den Befehl redis-cli ping (linux/macOS) oder redis-cli.exe ping (Windows), um den Dienststatus zu überprüfen. Verwenden Sie einen Redis-Client wie Redis-Cli, Python oder Node.js, um auf den Server zuzugreifen.
