🐡
図解で理解するAmazon MemoryDB
Amazon MemoryDB for Redisとは
Redis互換の高速インメモリデータベースで、マルチAZ構成や永続化機能を備えた本番向けのフルマネージドサービス。キャッシュ用途だけでなく、信頼性の高いリアルタイムデータストアとして利用可能。

Redisとは
キーと値のペアでデータを管理する、インメモリ型の高性能NoSQLデータベース。
| 特徴 | 内容 |
|---|---|
| インメモリ | データをディスクではなくメモリに置くので高速 |
| キー・バリュー型 | key→valueのシンプルな形式でデータを管理 |
| 多様な構造 | 文字列だけでなく、リストやセットなども扱える |
コマンド集(別記事):
MemoryDB for Redisの構成要素
①クラスター
- MemoryDBの最上位の論理単位
- 1つのクラスターには複数のシャードを持つことが可能。
- クラスターは自動的にマルチAZ対応(高可用性)されるように構成可能。

②シャード
- データの分割単位(水平スケーリング)
- クラスターは1つ以上のシャードを持ち、それぞれのシャードが異なるキー範囲のデータを担当。
- 1つのシャードは、1つのプライマリノードと0個以上のレプリカノードで構成。
③プライマリノード
- 各シャード内に1つだけ存在するリーダーノード
- 全ての書き込み・更新処理はこのノードを経由
- 他のノード(レプリカ)に対してデータを同期する役割も担う
④レプリカノード
- プライマリノードの読み取り専用のコピー
- 高可用性のために使われ、プライマリが障害時には自動で昇格(フェイルオーバー)
- 読み取りスループット向上のためにも活用
⑤エンドポイント
MemoryDBには用途に応じた複数の接続エンドポイントがある。
| 種類 | 用途 |
|---|---|
| クラスターエンドポイント | クラスター全体へのルーティング(読み取り時に便利) |
| シャードエンドポイント | 特定のシャードのノードに接続(高度な制御が必要な時) |
| ノードエンドポイント | 特定のプライマリまたはレプリカノードに直接接続 |
⑥スナップショット
- バックアップ/復元用途の自動スナップショット
- 毎日1回の自動スナップショットをスケジューリング可能
- 任意のタイミングで手動スナップショットも取得可能
特徴
| 項目 | 内容 |
|---|---|
| Redis互換のインメモリDB | Redis OSS(オープンソース)と高い互換性を持ち、既存の Redisクライアントライブラリやコマンドをそのまま利用可能 |
| 高速アクセスと低レイテンシ | 全てのデータをインメモリで処理するため、1ミリ秒未満の応答速度を実現。 |
| 永続化と高可用性を両立 | AOF(Append-Only File)方式での永続化に対応。マルチAZ対応によりノード障害やAZ障害が発生しても、自動でフェイルオーバー。 |
| スケーラブルなクラスタ管理 | クラスタ構成をサポートしており、シャード単位で水平スケーリングが可能 |
MemoryDBのセキュリティ設定
Redis AUTH(ユーザー認証)
- Redis標準のAUTHコマンド(パスワード認証)をサポート
- クライアント接続時に認証を要求することで、不正アクセスを防止
- パスワードはMemoryDBクラスター作成時に設定可能(後から変更も可)
TLS通信
- クライアント〜MemoryDB間の通信を暗号化するためのTLS(SSL)をサポート。
- TLSが有効なクラスターでは、クライアントもTLS対応で接続する必要あり
- デフォルトでは有効推奨
データの保存時暗号化
- MemoryDBはKMSと連携して、保存データを暗号化可能。
- 暗号鍵は以下のどちらかを選択
- AWS管理のデフォルトキー(aws/memorydb)
- カスタマー管理キー(CMK)
料金モデル
①インスタンス使用料金(時間単位)
- 料金の基本はノード単位での時間課金
- インスタンスタイプごとに料金が異なり、プライマリノードもレプリカノードも課金対象
- クラスターがシャード2つ+レプリカ各1台なら、合計4ノード分が課金される
②スナップショットストレージ料金
- 自動・手動問わず、スナップショット(バックアップ)に使用するストレージにも課金される。
- 初期の一定容量までは無料ですが、それを超えるとGB単位で料金が発生。
③データ転送料金
VPC内通信(同一AZ)
無料(同一VPC内のEC2などとの接続)
AZ間通信・インターネット転送
異なるAZ間のレプリケーション通信や、外部へのデータ転送には料金がかかる。
(料金最適化には、クライアント(EC2など)をMemoryDBと同じAZに配置するのが理想)
Discussion