Beim Aktualisieren von Daten können verteilte Transaktionsprobleme auftreten, die dazu führen, dass Cache-Aktualisierungen erfolgreich sind, Datenbankänderungen jedoch fehlschlagen. Selbst wenn die Datenbankänderung fehlschlägt und nur der Cache gelöscht wird, ruft die nächste Abfrage die Daten immer noch direkt aus der Datenbank ab und es werden keine fehlerhaften Daten generiert.
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 Datenbankoperationsmethode.
Erst zuerst löschen
Erst später löschen
#🎜 🎜#FazitDies führt zu der Schlussfolgerung, dass sowohl die vordere als auch die hintere Löschung problematisch sind. Daher ist die Strategie der verzögerten doppelten Löschung Denkpunkt 2: Warum wird sie verzögert ist immer noch ein Beweis durch Widerspruch. Die Situation im Bild unten zeigt die Situation, in der der alte Cache nach dem doppelten Löschen noch vorhanden ist. Die Verzögerung beträgtStellen Sie sicher, dass die Cache-Änderungsvorgänge anderer Transaktionen abgeschlossen sind, bevor Sie die Datenbank ändern -> Cache leeren.
Ergänzung: Warum sollten wir das doppelte Löschen verzögern, um die Cache-Konsistenz sicherzustellen? 🎜#Warum doppeltes Löschen verzögern, um die Cache-Konsistenz sicherzustellen? Intervall zwischen Änderung und Löschung von Redis-Daten. Wenn ein Treffer vorliegt, ist garantiert, dass diese Daten nicht in Redis vorhanden sind. Wenn kein Löschvorgang durchgeführt wird, können alte Daten nach der Änderung der Datenbankdaten weiterhin von Redis gelesen werden, was zu Dateninkonsistenzen führt.
Der zweite Löschvorgang erfolgt nach dem Ändern der Datenbankdaten. Zu diesem Zeitpunkt müssen die entsprechenden Daten in Redis erneut gelöscht werden Beim Löschen und Ändern der Datenbankdaten werden die alten Daten erneut in Redis zwischengespeichert. Wenn sie dieses Mal jedoch nicht gelöscht werden, werden die alten Daten in der Datenbank geändert existieren in 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 dieses Mal schließlich die schmutzigen Daten Daten werden einmal von der Datenbank gesendet Server + Cache-Schreibzeit
Solange der Cache rechtzeitig gelöscht wird, können andere Threads den neuesten Wert lesen.
Wenn die Nachricht nicht wiederholt wird in mq verbraucht, wird es von anderen Verbrauchern an den Verbrauch übergeben (Cache löschen)
Das obige ist der detaillierte Inhalt vonWas bedeutet das verzögerte doppelte Löschen des Redis-Cache?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!