day111-キャッシュ分散ロックキャッシュ整合性ソリューションは、ここで確認するのに十分です

1.キャッシュの一貫性とは

キャッシュ内のデータはデータベース内のデータと同じですか?この整合性は、実際にはリアルタイムの整合性と最終的な整合性に分けられます

2.キャッシュの一貫性を確保するための2つの一般的な方法

これらの2つの方法を次の図に示します。特定の問題があることがわかります。

二重書き込みモード

明らかに、スレッド1はネットワークまたはその他の理由で最初にライブラリに書き込みますが、スレッド2の後にキャッシュをフラッシュします。キャッシュ内のデータは当然間違っています。

故障モード

図のように、スレッドはデータベースに書き込んでからキャッシュを削除します。問題ありません。2番目のスレッドはデータベースに書き込みます。キャッシュが削除されていない場合、スレッド3はキャッシュを読み取り、スレッドは3つは読み取りコンテンツの欠如に相当します。スレッド2はdbコンテンツに書き込みます。

つまり、この時点でスレッド2によって書き込まれたコンテンツがキャッシュにないため、スレッド2がキャッシュを削除した後、スレッド3がキャッシュを更新します。この時点で、キャッシュ内のデータも間違っています。リアルタイムの場合データの一貫性が考慮されているため、ここで必要です。

読み取り/書き込みコードに分散読み取り/書き込みロックを追加します

3.ソリューションの概要

 

おすすめ

転載: blog.csdn.net/JavaCoder_juejue/article/details/115060005