キャッシュ無効化
キャッシュされたデータが古くなった際に、最新のデータに更新または削除する仕組み
キャッシュ無効化とは
キャッシュ無効化 (Cache Invalidation) は、キャッシュされたデータがソースデータと乖離した際に、キャッシュを最新の状態に更新または削除する仕組みである。Phil Karlton の名言「コンピュータサイエンスで難しいことは 2 つだけ。キャッシュの無効化と命名だ」が示すとおり、正しく実装するのが最も困難なキャッシュの課題だ。
無効化戦略の比較
無効化戦略の比較を以下に示す。
| 戦略 | 仕組み | 整合性 | 複雑さ |
|---|---|---|---|
| TTL | 有効期限で自動削除 | TTL 内は古いデータ | 低い |
| Write-Through | 書き込み時にキャッシュも更新 | 常に最新 | 中程度 |
| Write-Behind | 書き込みをキャッシュに行い、非同期で DB に反映 | 最新だが DB 遅延あり | 高い |
| イベント駆動 | データ更新イベントでキャッシュを無効化 | ほぼ最新 | 中程度 |
| 手動パージ | 明示的にキャッシュを削除 | 操作時のみ最新 | 低い |
TTL ベースの無効化
最もシンプルで広く使われる。キャッシュに有効期限を設定し、期限切れで自動削除する。
// Redis でのキャッシュ + TTL
async function getUser(userId: string): Promise<User> {
const cached = await redis.get(`user:${userId}`);
if (cached) return JSON.parse(cached);
const user = await db.users.findById(userId);
await redis.setex(`user:${userId}`, 300, JSON.stringify(user)); // 5分 TTL
return user;
}
TTL 内は古いデータが返る可能性がある。許容できる古さ (Staleness) に応じて TTL を設定する。
イベント駆動の無効化
DynamoDB Streams + Lambda でキャッシュを即座に無効化する。
CloudFront のキャッシュ無効化
デプロイ時に aws cloudfront create-invalidation --paths "/*" で全キャッシュを無効化するのが一般的だ。ただし、インバリデーションはエッジロケーション全体に伝播するまで数分かかる。
より良いアプローチは、コンテンツハッシュをファイル名に含めること (app.a1b2c3.js)。ファイル内容が変わればハッシュが変わるため、インバリデーション不要で即座に新しいファイルが配信される。
よくある失敗パターン
キャッシュとDBの不整合
DB を更新してからキャッシュを更新するまでの間に、別のリクエストが古いキャッシュを読む。対策: キャッシュを「更新」ではなく「削除」する (Cache-Aside パターン)。次のリクエストでキャッシュミスが発生し、DB から最新データを取得する。
Thundering Herd
人気のあるキャッシュキーが TTL 切れになると、大量のリクエストが同時に DB に殺到する。対策: キャッシュの TTL にジッター (ランダムな揺らぎ) を加え、同時に期限切れになるのを防ぐ。
キャッシュ無効化の背景や設計思想は関連書籍に詳しい。
この記事は役に立ちましたか?
関連用語
キャッシュ
頻繁にアクセスされるデータを高速なストレージに保存し、読み取り性能を向上させる手法
ElastiCache
AWS のマネージドインメモリキャッシュサービスで、Redis と Memcached をサポートする
TTL
データやキャッシュの有効期限を設定し、自動的に削除・更新する仕組み
HTTP キャッシュ
Cache-Control, ETag, Last-Modified を使った HTTP レベルのキャッシュ制御
Redis
インメモリデータストアで、キャッシュ、セッション管理、Pub/Sub に使われる
CDN
世界中のエッジロケーションにコンテンツをキャッシュし、低レイテンシで配信するネットワーク
関連する記事
技術書がキャリアを変えた話 - 読書とキャリアの関係
技術書の読書習慣がエンジニアのキャリアに影響する 3 つの経路と、キャリア段階に応じた読書戦略を具体的に解説します。
年収を上げた 1 冊 - エンジニア 50 人に聞いたキャリアを変えた本
エンジニアのキャリアに転機をもたらした本にはどんな共通点があるのか。50 人の回答から見えてきた、キャリアを変える本の 3 つの特徴を分析します。
技術書 1 冊分の知識で年収が 50 万円変わる計算
技術書への投資リターンを具体的な数字で試算します。1 冊 3000 円の本が、スキルアップを通じてどれだけの年収増につながりうるのか。投資対効果の観点から技術書の価値を考えます。