本ページは、AWS に関する個人の勉強および勉強会で使用することを目的に、AWS ドキュメントなどを参照し作成しておりますが、記載の誤り等が含まれる場合がございます。
最新の情報については、AWS 公式ドキュメントをご参照ください。
フルマネージドのインメモリキャッシングサービスで、Memcached または Redis プロトコルに互換性があります。
【AWS Black Belt Online Seminar】Amazon ElastiCache(YouTube)(39:21)
古い資料(PDF)はこちら【AWS Black Belt Online Seminar】 Amazon ElastiCache-2017.12.14
レディス と読みます。
memory cache daemon の略でメムキャッシュディーと読みます。
Amazon Aurora Serverless と Amazon ElastiCache を使用してリアルタイムなリーダーボードをビルドする
Amazon ElastiCache for Redis を使い、オンラインアプリケーション用の高速セッションストアを構築する(※英語のみ)
Amazon ElastiCache for Redis を使い、MySQL データベースのパフォーマンスを向上させる(※英語のみ)
https://docs.aws.amazon.com/ja_jp/AmazonElastiCache/latest/red-ug/SelectEngine.html
主な比較は次のとおりです。
key | Memcached | Redis |
マルチスレッド | Yes | No |
データ型 | シンプル | 複雑 |
自動フェイルオーバー | No | Yes |
レプリケーション | No | Yes |
バックアップと復元 | No | Yes |
Pub/Sub | No | Yes |
Memcached のほうが単純な Key-Value の処理だとパフォーマンスが優れるが、レプリケーション/自動フェイルオーバー/複雑な集計などが必要な場合は Redis を選択するケースが多くなると思います。
こちらにも詳しく記載があります。 https://aws.amazon.com/jp/elasticache/redis-vs-memcached/
DynamoDB も Key-Value で低レイテンシーのサービスです。同じように代用もできるのではないかと考えます。 ただ、DynamoDB は可用性担保のため複数 AZ に保存しているので書き込みは遅くなります。また、DynamoDB はリクエスト数で課金されるため、頻繁に利用されるセッション情報などの場合はコストが急増したり、キャパシティが枯渇する可能性があります。DAX を利用することでこれらを回避することも出来ます。
つまり、基本的には永続化が不要であれば ElastiCache のほうがよいケースが多いと思われます。
構成イメージはこのようになります。クラスタ化されていますが、レプリケーションの機能はありません。
クラスタモード有効/無効 × レプリケーション有/無のパターンがあります。 クラスタモードは複数のシャードにデータを分散させることが出来ます。クラスタモードが有効でもシャードを1つに設定することも可能です。
クラスタもレプリケーションもない単一の構成です。
レプリケーションが有効な構成です。
クラスタモードが有効ですが、レプリケーション無しの構成です。
クラスタモードが有効でレプリケーション有りの構成です。
https://docs.aws.amazon.com/ja_jp/AmazonElastiCache/latest/red-ug/AutoFailover.html
レプリケーションされている場合、自動的にフェイルオーバーが実行されます。
https://docs.aws.amazon.com/ja_jp/AmazonElastiCache/latest/red-ug/Redis-Global-Datastore.html
Global Datastore for Redis 機能を使用すると、AWS リージョン全体で完全マネージド型、高速、信頼性、安全なレプリケーションを実行できます。