Ursachenanalyse: verzögertes doppeltes Löschen des Redis-Cache
Empfohlenes Lernen: Redis-Video-Tutorial
Warum wird der Cache gelöscht statt aktualisiert?
Wenn es sich um ein Update handelt und ein verteiltes Transaktionsproblem vorliegt, wird der Cache möglicherweise geändert und die Datenbankänderung schlägt möglicherweise fehl. Wenn Sie nur den Cache löschen, ruft die nächste Abfrage die Daten direkt aus der Datenbank ab, selbst wenn die Datenbankänderung fehlschlägt, und es werden keine fehlerhaften Daten angezeigt.
Was ist eine verzögerte doppelte Löschung?
Das heißt, beim Hinzufügen, Löschen oder Ändern einer Entitätsklasse muss der Cache der Entitätsklasse geleert werden. Die Löschposition liegt vor und nach der Datenbankbetriebsmethode.
Übernehmen Sie die Methode des Widerspruchsbeweises
Löschen Sie nur zuerst

Löschen Sie erst später
Fazit
Daher kann geschlossen werden, dass es bei beiden Vorlöschungen Probleme gibt und Nachlöschung. Daher wird die Strategie des verzögerten doppelten Löschens übernommen
Denkpunkt 2: Warum verzögert es sich?Es ist immer noch ein Beweis durch Widerspruch. Die Situation in der folgenden Abbildung zeigt die Situation, in der der alte Cache nach dem doppelten Löschen noch vorhanden ist. Die Verzögerung dient dazu, sicherzustellen, dass die Cache-Änderungsvorgänge anderer Transaktionen abgeschlossen wurden, bevor die Datenbank geändert wird -> Cache leeren.
Der zweite Löschvorgang erfolgt nach der Änderung der Datenbankdaten. Diesmal müssen die Daten zwischen der ersten Redis-Löschung und der Änderung der Datenbankdaten erneut gelöscht werden ist eine Anfrage, dann werden die alten Daten erneut in Redis zwischengespeichert, aber die Daten in der Datenbank werden als nächstes geändert. Wenn sie dieses Mal nicht gelöscht werden, bleiben die alten Daten in der Datenbank bestehen redis. Warum müssen Sie also das Löschen von Redis um einen bestimmten Zeitraum verzögern, nachdem die Datenbank das zweite Mal geändert wurde?
Um auf das vorherige Lesen der Datenbank zu warten, warten Sie, bis die Daten in den Cache geschrieben wurden, und löschen Sie schließlich die schmutzigen Daten, sodass die Zeit gekommen ist, die Daten von der Datenbank an den Server zu senden + Cache-Schreiben- Aber beim verzögerten Doppellöschen ist die Verzögerungszeit sehr schwer zu bestimmen, daher wird das verzögerte Doppellöschen nicht empfohlen
- Nach umfassenden Überlegungen gibt es nach dem Löschen des Caches auch dann, wenn die Datenbank zuerst geändert wird Es wird einen bestimmten Zeitraum geben, in dem die alten Daten gelesen werden, was normalerweise tolerierbar ist. Solange der Cache rechtzeitig gelöscht wird, können andere Threads den neuesten Wert lesen.
- Um sicherzustellen, dass der Cache gelöscht wird, können Sie gleichzeitig mit mq sicherstellen, dass der Cache gelöscht wird.
Wenn die Nachricht nicht wiederholt in mq verbraucht wird, wird sie an andere übergeben Verbraucher zum Verzehr (der Cache wird gelöscht)
Redis-Video-Tutorial
Das obige ist der detaillierte Inhalt vonUrsachenanalyse: verzögertes doppeltes Löschen des Redis-Cache. 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



Starten Sie Redis neu, indem Sie die Konfigurationsdatei angeben: 1. Suchen Sie die Konfigurationsdatei (redis.conf normalerweise im Konfi -Unterverzeichnis); 2. Ändern Sie die erforderliche Konfiguration (z. B. das Ändern des Ports); 3.. Verwenden Sie den Befehl edis-server /path/to/redis.conf, um Redis über die Konfigurationsdatei neu zu starten (wobei /path/redis.conf der Pfad der geänderten Konfigurationsdatei ist); V.

Die Daten existieren immer noch nach dem Neustart von Redis. Redis speichert Daten im Speicher, und das Neustart löscht keine Speicherdaten. Redis liefert auch Persistenz, speichert Daten über RDB- oder AOF -Dateien auf der Festplatte auf der Festplatte und stellt sicher, dass Daten nach dem Neustart aus persistierenden Dateien wiederhergestellt werden können.

So starten Sie den Redis-Dienst in verschiedenen Betriebssystemen neu: Linux/macOS: Verwenden Sie den SystemCTL-Befehl (SystemCTL Neustart REDIS-Server) oder den Servicebefehl (Service Redis-Server-Neustart). Windows: Verwenden Sie das Tool von Services.msc (Geben Sie "Services.msc" im Dialogfeld Ausführen und drücken Sie die Eingabetaste) und klicken Sie mit der rechten Maustaste auf den Dienst "Redis" und wählen Sie "Neustart".

Der Befehl rEDIS-Neustart ist Redis-Server. Dieser Befehl wird verwendet, um Konfigurationsdateien zu laden, Datenstrukturen zu erstellen, REDIS -Server zu starten und auf Client -Verbindungen zu hören. Benutzer können den Befehl "Redis-Server [Optionen]" im Terminal ausführen, um den Redis-Server neu zu starten. Zu den gemeinsamen Optionen gehören der Hintergrundvorgang, das Angeben von Konfigurationsdateipfad, das Angeben von Höranschluss und das Nachladen von Snapshots nur dann, wenn Daten verloren gehen. Beachten Sie, dass das Neustart des Servers alle Client -Verbindungen trennen und vor dem Neustart die erforderlichen Daten speichern.

So reinigen Sie alle Redis-Daten: Redis 2.8 und später: Der Befehl Flushall löscht alle Schlüsselwertpaare. Redis 2.6 und früher: Verwenden Sie den Befehl Del, um die Schlüssel nach dem anderen zu löschen oder den Redis -Client zum Löschen von Methoden zu löschen. Alternative: Starten Sie den Redis -Service (Verwendung mit Vorsicht) neu oder verwenden Sie den Redis -Client (z. B. Flushall () oder Flushdb ()).

Es gibt mehrere Mechanismen für die Kommunikation zwischen Redis-Instanzen: Pub/Sub: Publish/Sub-Modus und ermöglichen eine effiziente und niedrige Latenz-Nachrichten. Cluster -Modus: Verteilte Bereitstellungsmethode, die hohe Verfügbarkeit und Fehlertoleranz bietet. Cross-Instance-Befehl: Ermöglicht, Befehle direkt an eine andere Instanz zu senden, die für vorübergehende operative oder administrative Zwecke geeignet ist.

Redis Neustart löscht die Daten nicht, da Redis die Daten im Speicher speichert und die Daten aus persistentem Speicher wie RDB oder AOF lädt. Es gibt zwei Arten von anhaltendem Speicher: RDB und AOF, die sicherstellen, dass Daten nach dem Neustart nicht verloren gehen. Darüber hinaus verfügt Redis über andere Schutzmaßnahmen wie Snapshot -Optionen, Replikation und Sentinels, um den Datenverlust zu verhindern. In seltenen Fällen, wie z. B. anhaltende Speicherkorruption oder versehentliche Beendigung, kann dies jedoch zu Datenverlust führen.

Redis bietet zwei Befehle, um die Speicherverwendung aller Schlüssel in der Datenbank anzuzeigen: Speicherverwendung Allkeys: Gibt die Speicherverwendung aller Schlüssel im Format zurück: "Schlüssel" (Typ).
