今日は友達家族の家に遊びに行きました。子どもたちは楽しく遊んでいました。
AWS ElastiCache を勉強しようと思いましたが、そもそもキャッシュ戦略を理解していなかったのでメモ。
そもそもキャッシュ戦略って何?
キャッシュにいつデータを保存して、いつ更新・削除するかを決めるルール
種類
一般的に、以下のキャッシュ戦略がある。
つまり、読み込み時と書き込み時で方針がいくつかあり、組み合わせる必要がある。
読み込み時の戦略
アプリが DB からデータを取得する(読み込む)ときにキャッシュにデータを保存するケース。
- Cache Aside (Lazy Loading)
- Read Through
書き込み時の戦略
アプリが DB にデータを作成・更新・削除する(書き込む)ときにキャッシュのデータもそろえるケース。
- Write Through
- Write Behind (Write Back / Lazy Write)
- Write Around
- Refresh Ahead
Cache Aside (Lazy Loading)
アプリはまずキャッシュにアクセス。
キャッシュに欲しいデータが無ければ、アプリは DB から取得して、さらにキャッシュにも保存。
Cache-Aside パターン - Azure Architecture Center | Microsoft Learn
Read Through
アプリはキャッシュだけを参照して、キャッシュが DB からデータを自動で取得。
What is Read-Through vs Write-Through Cache?
Read-Through vs Write-Through Cache - by Stephane Moreau
Write Through
アプリが DB のデータを更新するときに、キャッシュも同時に更新する。
ざっとググると、アプリがキャッシュだけにアクセスする例もあれば、キャッシュとDB両方にアクセスする例も見られた。
What is Read-Through vs Write-Through Cache?
Database caching: Overview, types, strategies and their benefits.
Write Behind (Write Back / Lazy Write)
アプリはまずキャッシュのデータを更新して、後から DB へ非同期で反映する。
Database caching: Overview, types, strategies and their benefits.
Write Around
アプリは DB のデータを更新する。
※え、じゃあキャッシュへのデータ保存はいつ?
→「参照時にキャッシュになければ DB からデータを保存する」としている記事がいくつかあり、つまり Cache Aside との併用が前提なのかなと思いました。
Write-through, write-around, write-back: cache explained | Computer Weekly
Caching Strategy: Write-Around Pattern
Refresh Ahead
キャッシュ期限前にバックグラウンドのジョブなどで更新する。
つまり、キャッシュミスを極力避けたい場合の戦略。
※キャッシュへの初回データ保存は、たぶん他の戦略と組み合わせるんだと思う。
Caching Strategy: Refresh Ahead Pattern