コンテンツにスキップ

キャッシュとインメモリデータベース

文書基準: 2026年8月

データベース照会はディスクI/Oが発生するため数ミリ秒〜数十ミリ秒かかります。インメモリキャッシュは頻繁に参照されるデータをメモリに保存し、応答時間をマイクロ秒単位に短縮します。

パターン 動作 適した場合
Cache-Aside アプリがキャッシュ確認 → ミス時にDB照会 → キャッシュ保存 読み取り中心、最も一般的
Write-Through アプリがキャッシュに書き込み → キャッシュがDBに同期書き込み 整合性が重要、書き込み遅延許容
Write-Behind アプリがキャッシュに書き込み → キャッシュが非同期でDBに書き込み 書き込み性能が重要、一時的な不整合許容
Read-Through キャッシュがDB照会を代行 キャッシュライブラリがDB連携をサポートする場合
ベンダー サービス エンジン 特徴
AWS ElastiCache for Valkey Valkey(Redisフォーク) 基本推奨。Serverlessオプション。ベクトル検索サポート
AWS ElastiCache for Redis Redis 既存ワークロード互換用
AWS MemoryDB for Valkey Valkey 耐久性保証(ディスク永続化)。プライマリDBとして使用可能
Azure Azure Cache for Redis Redis Enterpriseティア(Redis Enterpriseベース)
Google Cloud Memorystore for Valkey Valkey 基本推奨。Clusterモード、自動フェイルオーバー
Google Cloud Memorystore for Redis Redis 既存互換用
OCI OCI Cache Redis互換 マネージドRedisクラスタ
項目 Valkey/Redis Memcached
データ構造 String、Hash、List、Set、Sorted Set、Stream Stringのみ(key-value)
永続性 RDB/AOFスナップショット可能 なし(純粋なキャッシュ)
レプリケーション/HA レプリカ + 自動フェイルオーバー なし(クライアントシャーディング)
Pub/Sub サポート 非サポート
適した場合 セッションストア、リーダーボード、リアルタイム分析、Pub/Sub シンプルなキャッシュ、大容量オブジェクトキャッシング
要件 推奨
DB読み取り負荷分散(一般的なキャッシュ) ElastiCache/Memorystore Valkey (またはRedis) (Cache-Aside)
セッションストア(TTL + 構造化データ) Valkey / Redis(Hashタイプ)
プライマリDBの代替(耐久性が必要) MemoryDB for Valkey
シンプルなkey-value、最大スループット Memcached
リアルタイムリーダーボード/カウンター Valkey / Redis(Sorted Set)
  • キャッシュを永続ストレージのように使用 — キャッシュはいつでも消える可能性があります。オリジナルデータなしでキャッシュのみに保存すると、障害時にデータが失われます。
  • すべてのキーにTTLを設定しない — TTLなしでキャッシュすると、データが永遠に残りDBとの不整合が発生し、メモリが枯渇します。
  • キャッシュ障害時のfallbackを実装しない — キャッシュ依存アーキテクチャでキャッシュがダウンすると、サービス全体が停止します。キャッシュミス時のDB直接照会経路を必ず確保してください。
  • すべてのキャッシュキーにビジネス要件に合ったTTLが設定されているか
  • キャッシュ障害時にDB直接照会へのfallback経路が実装されているか
  • キャッシュメモリ使用量のモニタリングとeviction戦略(LRU/LFU)を確認したか