【きゃっしゅせんりゃく】

キャッシュ戦略 とは?

💡 「いつ」「何を」キャッシュして「いつ捨てる」かの戦略
📌 このページのポイント
代表的なキャッシュ戦略の比較 Cache-Aside アプリ Cache DB ①確認 ②ミス時DBから取得 ③キャッシュに保存 Write-Through アプリ Cache DB 書込み: Cache→即DB 整合性◎ / 速度△ Write-Back アプリ Cache DB 書込み: Cacheのみ 速度◎ / 整合性△ 特徴 Cache-Aside Write-Through Write-Back 読み取り速度 ◎ 速い ◎ 速い ◎ 速い 書き込み速度 ○ 普通 △ 遅い ◎ 速い データ整合性 ○ 普通 ◎ 高い △ リスク 実装の容易さ ◎ 簡単 ○ 普通 △ 複雑
キャッシュ戦略のイメージ
ひよこ ひよこ

Cache-Asideって何?

ペンギン先生 ペンギン先生

最もポピュラーなパターンだよ。①アプリがキャッシュを確認、②キャッシュにあれば返す(ヒット)、③なければDBから取得してキャッシュに保存してから返す(ミス)。Redisと組み合わせるのが典型的。シンプルだけど「キャッシュとDBの不整合」に注意が必要だね

ひよこ ひよこ

キャッシュが古くなる問題は?

ペンギン先生 ペンギン先生

TTL(Time To Live)で有効期限を設定して期限切れで再取得、②データ更新時にキャッシュを明示的に削除(Cache Invalidation)、③Write-Throughで書き込み時にキャッシュも更新。Phil Karltonの「コンピュータサイエンスの2大難問は、キャッシュの無効化と命名」は本当に正しいよ

ひよこ ひよこ

TTLの設定目安は?

ペンギン先生 ペンギン先生

データの更新頻度と整合性要件で決めるよ。①マスターデータ(商品カテゴリ等):数時間〜1日。②ユーザープロフィール:数分〜数十分。③リアルタイム性が必要(在庫数):数秒〜キャッシュしない。TTLが短いとDBへの問い合わせが増え、長いと古いデータが表示されるトレードオフだね

ひよこ ひよこ

キャッシュの落とし穴は?

ペンギン先生 ペンギン先生

①Cache Stampede(キャッシュ期限切れ時に大量リクエストがDBに殺到)→ロック機構で1つだけDBにアクセスさせる。②Thundering Herd(キャッシュ障害時に全リクエストがDBに集中)→サーキットブレーカーで防ぐ。③キャッシュポイズニング(不正データがキャッシュに入る)→入力バリデーションキャッシュは「銀の弾丸」ではなく、適切な設計が必要だよ

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
キャッシュ戦略」って出てきたら「キャッシュの読み書きパターンとライフサイクルの設計」と思えればだいたいOK!
📖 おまけ:英語の意味
「Caching Strategy」 = キャッシュ戦略
💬 Cache(キャッシュ)のStrategy(戦略)。どのパターンでキャッシュを管理するかの設計だよ
← 用語集にもどる