Amazon ElastiCache
キャッシュ(Redis)
マネージド Redis/Valkey/Memcached で、データを RAM に保存し、database より何倍も高速に読み取れます。
- コスト$$ ふつう
- 難易度●●●●●
- 未使用でも課金?はい
- AWS マネージド
- 出題試験SAA · DVA · SOA
たとえるなら机に貼った付箋のようなものです。よく使う情報を手元に置いておけば、棚を開ける必要がありません。
ElastiCache はシステムのどこにある?
ElastiCache を呼び出す
具体例でステップごとに
- ニュースサイトのトップページは 1 回の表示でデータベースを 50 回呼び出し、ピーク時にはデータベースが過負荷になります。
- 別の AZ にレプリカを持つ ElastiCache for Valkey(Redis 互換)クラスターを作成します。
- アプリはまずキャッシュを確認し、なければデータベースに問い合わせて、結果を 60 秒間キャッシュします。
- ほとんどのリクエストがメモリから 1 ミリ秒未満で返るようになり、データベースの負荷が大きく下がります。
- ログインセッションも ElastiCache に移すので、Web サーバーが故障してもユーザーはログアウトされません。
いつ使う?
✓ 使うべき場面
DB クエリのキャッシュ、session の保存、ランキング。
✗ 避けるべき場面
絶対的な耐久性が必要なメインデータ → database。
よくある使い方
- RDS の負荷を下げるクエリキャッシュ
- Web の session の保存
- リーダーボード、レート制限(rate limit)、リアルタイム pub/sub
ElastiCache・DynamoDB・RDS の違い
| 役割 | キャッシュ、セッション保存 | メインのデータベース(NoSQL) | メインのデータベース(SQL) |
|---|---|---|---|
| 速度 | 1 ミリ秒未満(インメモリ) | 数ミリ秒 | クエリ次第 |
| 耐久性 | DB の代わりではない(レプリケーション・バックアップあり) | 高い、複数 AZ | 高い、バックアップあり |
| 課金 | ノードごとの時間料金、またはサーバーレス | リクエスト単位または容量 | インスタンス時間 + ストレージ |
料金はいくら?
- 課金方式: node の時間単位(例: cache.t4g.micro 約 $0.016/時間)、または ElastiCache Serverless ではデータ GB と処理単位(ECPU)単位。
- 無料枠: 旧アカウント: 12 か月間 cache.t*.micro 750 時間。
Serverless には課金される最小データ量がある。需要に比べて cluster が大きすぎる。アプリとキャッシュ間の AZ をまたぐデータ転送。
「データベースの読み取り負荷を下げる」「Web サーバー障害時にセッションを失わない」なら ElastiCache です。レプリケーション、フェイルオーバー、豊富なデータ型が必要なら Redis/Valkey、シンプルなマルチスレッドのキャッシュだけなら Memcached、DynamoDB 専用のキャッシュなら DAX です。
本番の試験問題に挑戦
1A company runs a web application on Amazon EC2 instances in an Auto Scaling group behind an Application Load Balancer that has sticky sessions enabled. The web server currently hosts the user session state. The company wants to ensure high availability and avoid user session state loss in the event of a web server outage. Which solution will meet these requirements?
- AUse an Amazon ElastiCache for Memcached instance to store the session data. Update the application to use ElastiCache for Memcached to store the session state.
- BUse Amazon ElastiCache for Redis to store the session state. Update the application to use ElastiCache for Redis to store the session state.
- CUse an AWS Storage Gateway cached volume to store session data. Update the application to use AWS Storage Gateway cached volume to store the session state.
- DUse Amazon RDS to store the session state. Update the application to use Amazon RDS to store the session state.
答えを見る
正解: B
セッションを Web サーバーから切り離し、ElastiCache for Redis(レプリケーションと自動フェイルオーバーあり)に保存します。1 台が故障してもユーザーのセッションは失われません。Memcached にはレプリケーションがないので、データを失う可能性があります。
2What does Amazon ElastiCache provide?
- AA service by this name doesn't exist. Perhaps you mean Amazon CloudCache.
- BA virtual server with a huge amount of memory.
- CA managed In-memory cache service.
- DAn Amazon EC2 instance with the Memcached software already pre-installed.
答えを見る
正解: C
ElastiCache は AWS が管理するインメモリキャッシュサービス(Redis、Valkey、Memcached)です。
よくある質問
ElastiCache は Redis(Valkey)と Memcached のどちらを使うべきですか?
Redis OSS と Valkey は豊富なデータ型、レプリケーション、自動フェイルオーバー、バックアップ、永続化に対応し、ほとんどの用途に向いています。Memcached はシンプルでマルチスレッド対応ですが、純粋なキャッシュ専用で、レプリケーションや永続化はありません。
ElastiCache と DAX の違いは何ですか?
DAX は DynamoDB 専用のキャッシュで、コードの変更はほとんど不要です。ElastiCache はあらゆるデータソース(RDS、API、計算結果)やセッション保存に使える汎用キャッシュですが、キャッシュの読み書きのロジックはアプリケーション側で実装する必要があります。
ElastiCache の料金はどのように決まりますか?
ノードベースのクラスターはノードごとの時間料金で、リクエストがなくても常に稼働しています。ElastiCache Serverless は保存データ量と実際に使った処理ユニット(ECPU)に応じて課金されます。
AWS 認定試験では ElastiCache について何が問われますか?
データベースの読み取り負荷の軽減、アプリケーションをステートレスにするためのセッション保存、Redis と Memcached の選択、遅延読み込みと書き込みスルーのキャッシュ戦略、自動フェイルオーバーのためのマルチ AZ などです。