1.キャッシュの一貫性とは
キャッシュ内のデータはデータベース内のデータと同じですか?この整合性は、実際にはリアルタイムの整合性と最終的な整合性に分けられます
2.キャッシュの一貫性を確保するための2つの一般的な方法
これらの2つの方法を次の図に示します。特定の問題があることがわかります。
二重書き込みモード
明らかに、スレッド1はネットワークまたはその他の理由で最初にライブラリに書き込みますが、スレッド2の後にキャッシュをフラッシュします。キャッシュ内のデータは当然間違っています。
故障モード
図のように、スレッドはデータベースに書き込んでからキャッシュを削除します。問題ありません。2番目のスレッドはデータベースに書き込みます。キャッシュが削除されていない場合、スレッド3はキャッシュを読み取り、スレッドは3つは読み取りコンテンツの欠如に相当します。スレッド2はdbコンテンツに書き込みます。
つまり、この時点でスレッド2によって書き込まれたコンテンツがキャッシュにないため、スレッド2がキャッシュを削除した後、スレッド3がキャッシュを更新します。この時点で、キャッシュ内のデータも間違っています。リアルタイムの場合データの一貫性が考慮されているため、ここで必要です。
読み取り/書き込みコードに分散読み取り/書き込みロックを追加します
3.ソリューションの概要