😀
キャッシュへのアクセスパターン(2種)のまとめ
キャッシュ制御の設計を実施する機会があったので、調べた内容を簡単にまとめておきます。今回調べた制御手法は以下の2つの手法です
- Lazy Loading
- Write Through
私は読み込み対象のデータに偏りが大きいと判断したのでLazy Loadingを採用することにしました。
比較
| Lazy Loading | Write Through | |
|---|---|---|
| キャッシュ容量 | 少ない | 多い(全てのデータ(アクセス頻度が少ないデータを含む)をキャッシュする) |
| 処理負荷 | 効率的(アクセス頻度の低いデータのキャッシュは作成しない) | 非効率(読み込まれないデータもキャッシュする) |
| キャッシュミス | 発生する | ない |
| データ鮮度 | キャッシュ保持期間に依存 (時間等でキャッシュ破棄の管理必要) |
古くなることは無い |
| レイテンシ (書き込み) |
影響なし | キャッシュ更新時間が発生 (設計依存) |
| レイテンシ (読み込み) |
キャッシュミス時に時間がかかる | 高速 |
手法別の処理フロー
Lazy Loading
(まずキャッシュを読む⇒なければオリジナル読む⇒結果をキャッシュに書く)
書き込み時
読み込み時
Write Through
(常にキャッシュにも書き込む)
書き込み時
クライアントによる書き込み
ソース更新に連動
読み込み時
自分用のメモですが、誰かの参考になれば幸いです。
以上です。
Discussion