Amazon ElastiCache
ElastiCache とは?
データの読み書きをディスク(HDD / SSD)ではなく、 メモリ(RAM) 上で行う「インメモリデータベース」を提供するサービスです。 通常、データベース(RDS 等)からデータを取得するには時間がかかりますが、一度取得したデータを ElastiCache に保存(キャッシュ)しておくことで、2 回目以降は超高速にデータを返すことができます。
主な特徴
- 低レイテンシ: マイクロ秒単位の応答速度を実現
- フルマネージド: ハードウェアのプロビジョニング、パッチ適用、バックアップなどの運用を AWS が自動で行う
- スケーラブル: 需要に合わせてメモリ容量を拡張・縮小
選べる 2 つのエンジン
ElastiCache では、用途に合わせて以下の 2 つのオープンソースエンジンから選択します。現在では、多機能な Redis が選ばれることが一般的です。
| 特徴 | Redis (OSS) / Valkey | Memcached |
|---|---|---|
| データ型 | 文字列、リスト、セット、ハッシュなど多彩 | シンプルな Key-Value のみ |
| 永続性 | あり(ディスクへの保存が可能) | なし(再起動でデータ消失) |
| 可用性 | 高い(マルチ AZ、レプリケーション) | 低い(基本はシングルノード) |
| 主な用途 | キャッシュ、ランキング、セッション管理 | 単純なキャッシュ(軽量・高速) |
ヒント
最近では Redis のフォークである Valkey もサポートされており、より高いコストパフォーマンスが期待できます。
主なユースケース
- データベースキャッシュ 頻繁にアクセスされるクエリ結果をキャッシュし、RDS などのメインデータベースへの負荷を軽減します。
- セッション管理 Web アプリケーションのログイン情報(セッション)を保持します。サーバーが複数あっても、ElastiCache を参照することで一貫したセッション状態を維持できます。
- リアルタイムランキング Redis の「ソート済みセット(Sorted Set)」という機能を使うと、膨大なユーザーのスコアランキングをリアルタイムで高速に更新・取得できます。
- メッセージキュー
Pub/Sub(発行 / 購読)機能を利用して、アプリケーション間でのメッセージのやり取りを仲介します。
構成のイメージ
- アプリケーションがデータをリクエストする
- まず ElastiCache を見にいく
- データがあれば(Cache Hit)、そのまま高速に返す
- データがなければ(Cache Miss)、RDS に問い合わせ、結果を ElastiCache に保存してから返す。