【AWS】 Amazon MemoryDB for Redis vs ElasticCache
概要
チャット機能を実装する際によく利用されているRedisだが、AWSを利用する場合はどのサービスを選択すべきかがよくわかっていなかったので調べた。
選択肢
redisで検索すると以下の2つがヒットする。
- Amazon MemoryDB for Redis
- ElasticCache
これらのどちらを利用すべきか。
例えばチャット機能を実装したい場合、「AWS チャット」みたいに検索するとElasticCacheを利用するモデルが検索結果には多い。
ただ、MemoryDBの方が後発サービスらしく、こちらを使った方が良さそうにも思える。
比較検討
しばらく調べてみて一番参考になりそうだったのが↓
https://cloudwellserved.com/amazon-elasticache-for-redis-vs-amazon-memorydb-for-redis/
ElasticCache
AWSのサービス概要にも「In-Memory Cache」とあるように、データをメモリにキャッシュとして保存して取り扱うサービス。
本来データベースにデータを取りに行くところを、キャッシュがあればそちらを取りに行かせることができて、データベースへのアクセスを減らせて処理も軽くなるから速度改善できるよ、というサービスのようだ。
決してデータベースではなく、あくまでデータベースのキャッシュとしての立ち位置であり、AWS上ではRDSと共に運用されるサービスである。
また、読み込みはキャッシュからできるが、書き込みはデータベースに対して行わなければならず、その後にキャッシュの更新も必要。
単体で利用するならばセッションの保持とかできそう。
Amazon MemoryDB for Redis
AWSのサービス概要にも「Fully managed, Redis-compatible, in-memory database service」とあるように、データベースサービスである。
RDS + ElasticCacheで運用していたものをまとめて一つのサービスとしたようなもの。
データの読み書き共にこのサービスに対して実行すればよく、こちらの方がデータベースとしてRedisを使いたいという利用目的に適っている。
料金はどこを見てもElasticCacheの約1.5倍と見積もっているところが多い気がする。
結論
セッションの保持などのブラウザ上でいうCookieのような利用がしたいのであれば、ElasticCache単体で良さそう。
チャットなどのデータベースに対する読み書きのような利用がしたいのであれば、ElasticCache + RDSよりも運用しやすそうなAmazon MemoryDB for Redisを使いたい。