ホームページ  >  記事  >  データベース  >  Redis キャッシュの遅延二重削除とは何を意味しますか?

Redis キャッシュの遅延二重削除とは何を意味しますか?

王林
王林転載
2023-05-26 15:49:513112ブラウズ

#キャッシュが更新されずに削除されるのはなぜですか?

データを更新するときに、分散トランザクションの問題が発生し、キャッシュの更新は成功してもデータベースの変更が失敗する可能性があります。データベースの変更が失敗し、キャッシュのみが削除された場合でも、次のクエリはデータベースから直接データを取得するため、ダーティ データは生成されません。

遅延二重削除とは何ですか?

つまり、エンティティクラスを追加、削除、変更する場合には、エンティティクラスのキャッシュをクリアする必要があり、クリア位置はデータベース操作メソッドの前後になります。

#矛盾による証明を採用する

最初のみ削除

Redis キャッシュの遅延二重削除とは何を意味しますか?#後でのみ削除

結論Redis キャッシュの遅延二重削除とは何を意味しますか?

これにより、前方削除と後方削除の両方に問題があるという結論になります。したがって、遅延二重削除戦略が採用されます。

考察 2: なぜ遅延するのか

それでも矛盾による証明です。次の図の状況は、二重削除後に古いキャッシュがまだ存在する状況を示しています。データベースの変更 -> キャッシュのクリアの前に、他のトランザクションのキャッシュ変更操作が完了していることを確認するため、遅延は

です。

Redis キャッシュの遅延二重削除とは何を意味しますか?補足: キャッシュの一貫性を確保するために、なぜ二重削除を遅らせる必要があるのですか?

なぜ二重削除を遅らせる必要があるのですか?キャッシュの一貫性を確保する

データベース データを変更する前に、まず Redis を削除する必要があります。これは、データベース データの変更と Redis データの削除の間の間隔でキャッシュの一貫性を確保するためです。ヒットがある場合は、このデータが Redis に存在しないことを確認してください。削除操作が実行されない場合、データベース データが変更された後でも古いデータが redis から読み取られる可能性があり、データの不整合が発生します。
  • 2 回目の削除は、データベースのデータを変更した後です。このとき、redis 内の対応するデータを再度削除する必要があります。今回は、1 回目の redis の削除とデータベースを削除します。データの変更。この間にリクエストがあれば、古いデータは再び redis にキャッシュされます。ただし、次にデータベース内のデータが変更されます。今回削除されなかった場合、データベース内の古いデータは残ります。 redisに存在します。
  • では、データベースが 2 回目に変更された後、なぜ redis の削除を一定期間遅らせる必要があるのでしょうか?
  • データベースの前回の読み取りを待つために、データがキャッシュに書き込まれるのを待ち、最後にダーティ データを削除して、データがデータベースから送信されるようにします。時刻をサーバー キャッシュに書き込みます。

ただし、遅延二重削除では、遅延時間を判断するのが非常に難しいため、遅延二重削除はお勧めできません。 Redis キャッシュの遅延二重削除とは何を意味しますか?

総合的な考慮に基づいて、最初にデータベースが変更され、キャッシュが削除された場合でも、一定期間は古いデータが読み取られますが、これは通常は許容されます。

キャッシュが時間内に削除される限り、他のスレッドは最新の値を読み取ることができます。

同時に、キャッシュが確実に削除されるようにするために、mq を使用してキャッシュが削除されることを確認できます。

メッセージが mq で繰り返し消費されない場合、消費するために他の消費者に渡されます (キャッシュの削除)

以上がRedis キャッシュの遅延二重削除とは何を意味しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。