私は今学期にデータベースの授業を受けており、RDBMS と memcached などのキャッシュ サーバーとの間でキャッシュの一貫性を維持する方法について勉強しています。競合状態が発生すると、一貫性の問題が発生します。例えば:
- キャッシュからを実行し
get(key)
、キャッシュ ミスが発生したとします。キャッシュ ミスが発生したため、データベースからデータを取得put(key,value)
し、キャッシュに対して a を実行します。 - しかし、競合状態が発生する可能性があり、データベースから取得したデータを他のユーザーが削除する可能性があります。
put
この削除は、キャッシュを行う前に発生する可能性があります。
したがって、理想的にはput
、データがデータベースに長く存在するため、キャッシュへの挿入は発生しないはずです。
キャッシュ エントリに TTL がある場合、キャッシュ内のエントリの有効期限が切れる可能性があります。それでも、キャッシュ内のデータがデータベースと一致しないウィンドウがあります。
この種の問題について語っている記事/研究論文を探しています。しかし、有用なリソースは見つかりませんでした。