Heim  >  Artikel  >  Datenbank  >  Was bedeutet das verzögerte doppelte Löschen des Redis-Cache?

Was bedeutet das verzögerte doppelte Löschen des Redis-Cache?

王林
王林nach vorne
2023-05-26 15:49:513112Durchsuche

Warum wird der Cache gelöscht statt aktualisiert?

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.

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

Beweis durch Widerspruch übernehmen

Erst zuerst löschen

Was bedeutet das verzögerte doppelte Löschen des Redis-Cache?

Erst später löschen

#🎜 🎜#

Was bedeutet das verzögerte doppelte Löschen des Redis-Cache?

Fazit

Dies 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ägt

Stellen Sie sicher, dass die Cache-Änderungsvorgänge anderer Transaktionen abgeschlossen sind, bevor Sie die Datenbank ändern -> Cache leeren.

Was bedeutet das verzögerte doppelte Löschen des Redis-Cache?

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

  • Die Verzögerungszeit des verzögerten doppelten Löschens beträgt jedoch Sehr schwer zu bestimmen, daher wird ein verzögertes doppeltes Löschen nicht empfohlen wird in der Regel toleriert.

    Solange der Cache rechtzeitig gelöscht wird, können andere Threads den neuesten Wert lesen.

  • Um sicherzustellen, dass der Cache gelöscht wird, kann mq gleichzeitig verwendet werden, um sicherzustellen, dass der Cache gelöscht wird

Wenn die Nachricht nicht wiederholt wird in mq verbraucht, wird es von anderen Verbrauchern an den Verbrauch übergeben (Cache löschen)Was bedeutet das verzögerte doppelte Löschen des Redis-Cache?

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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen