データを更新するときに、分散トランザクションの問題が発生し、キャッシュの更新は成功してもデータベースの変更が失敗する可能性があります。データベースの変更が失敗し、キャッシュのみが削除された場合でも、次のクエリはデータベースから直接データを取得するため、ダーティ データは生成されません。
つまり、エンティティクラスを追加、削除、変更する場合には、エンティティクラスのキャッシュをクリアする必要があり、クリア位置はデータベース操作メソッドの前後になります。
#矛盾による証明を採用する最初のみ削除#後でのみ削除
結論
これにより、前方削除と後方削除の両方に問題があるという結論になります。したがって、遅延二重削除戦略が採用されます。考察 2: なぜ遅延するのかそれでも矛盾による証明です。次の図の状況は、二重削除後に古いキャッシュがまだ存在する状況を示しています。データベースの変更 -> キャッシュのクリアの前に、他のトランザクションのキャッシュ変更操作が完了していることを確認するため、遅延は
補足: キャッシュの一貫性を確保するために、なぜ二重削除を遅らせる必要があるのですか?
なぜ二重削除を遅らせる必要があるのですか?キャッシュの一貫性を確保する
データベース データを変更する前に、まず Redis を削除する必要があります。これは、データベース データの変更と Redis データの削除の間の間隔でキャッシュの一貫性を確保するためです。ヒットがある場合は、このデータが Redis に存在しないことを確認してください。削除操作が実行されない場合、データベース データが変更された後でも古いデータが redis から読み取られる可能性があり、データの不整合が発生します。ただし、遅延二重削除では、遅延時間を判断するのが非常に難しいため、遅延二重削除はお勧めできません。
総合的な考慮に基づいて、最初にデータベースが変更され、キャッシュが削除された場合でも、一定期間は古いデータが読み取られますが、これは通常は許容されます。同時に、キャッシュが確実に削除されるようにするために、mq を使用してキャッシュが削除されることを確認できます。
以上がRedis キャッシュの遅延二重削除とは何を意味しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。