キャッシュとインメモリデータベース
文書基準: 2026年8月
データベース照会はディスクI/Oが発生するため数ミリ秒〜数十ミリ秒かかります。インメモリキャッシュは頻繁に参照されるデータをメモリに保存し、応答時間をマイクロ秒単位に短縮します。
キャッシュパターン
Section titled “キャッシュパターン”| パターン | 動作 | 適した場合 |
|---|---|---|
| Cache-Aside | アプリがキャッシュ確認 → ミス時にDB照会 → キャッシュ保存 | 読み取り中心、最も一般的 |
| Write-Through | アプリがキャッシュに書き込み → キャッシュがDBに同期書き込み | 整合性が重要、書き込み遅延許容 |
| Write-Behind | アプリがキャッシュに書き込み → キャッシュが非同期でDBに書き込み | 書き込み性能が重要、一時的な不整合許容 |
| Read-Through | キャッシュがDB照会を代行 | キャッシュライブラリがDB連携をサポートする場合 |
ベンダー別サービス比較
Section titled “ベンダー別サービス比較”| ベンダー | サービス | エンジン | 特徴 |
|---|---|---|---|
| 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 vs Memcached
Section titled “Valkey/Redis vs Memcached”| 項目 | Valkey/Redis | Memcached |
|---|---|---|
| データ構造 | String、Hash、List、Set、Sorted Set、Stream | Stringのみ(key-value) |
| 永続性 | RDB/AOFスナップショット可能 | なし(純粋なキャッシュ) |
| レプリケーション/HA | レプリカ + 自動フェイルオーバー | なし(クライアントシャーディング) |
| Pub/Sub | サポート | 非サポート |
| 適した場合 | セッションストア、リーダーボード、リアルタイム分析、Pub/Sub | シンプルなキャッシュ、大容量オブジェクトキャッシング |
いつ何を選ぶか
Section titled “いつ何を選ぶか”| 要件 | 推奨 |
|---|---|
| DB読み取り負荷分散(一般的なキャッシュ) | ElastiCache/Memorystore Valkey (またはRedis) (Cache-Aside) |
| セッションストア(TTL + 構造化データ) | Valkey / Redis(Hashタイプ) |
| プライマリDBの代替(耐久性が必要) | MemoryDB for Valkey |
| シンプルなkey-value、最大スループット | Memcached |
| リアルタイムリーダーボード/カウンター | Valkey / Redis(Sorted Set) |
よくある間違い
Section titled “よくある間違い”- キャッシュを永続ストレージのように使用 — キャッシュはいつでも消える可能性があります。オリジナルデータなしでキャッシュのみに保存すると、障害時にデータが失われます。
- すべてのキーにTTLを設定しない — TTLなしでキャッシュすると、データが永遠に残りDBとの不整合が発生し、メモリが枯渇します。
- キャッシュ障害時のfallbackを実装しない — キャッシュ依存アーキテクチャでキャッシュがダウンすると、サービス全体が停止します。キャッシュミス時のDB直接照会経路を必ず確保してください。
チェックリスト
Section titled “チェックリスト”- すべてのキャッシュキーにビジネス要件に合ったTTLが設定されているか
- キャッシュ障害時にDB直接照会へのfallback経路が実装されているか
- キャッシュメモリ使用量のモニタリングとeviction戦略(LRU/LFU)を確認したか
オープンソース
Section titled “オープンソース”- Valkey 公式サイト — Linux Foundation傘下のRedisフォーク
- Valkey GitHub