強欲で謙虚なツボツボ

趣味の読書の書の方

【AWS】 Amazon MemoryDB for Redis vs ElasticCache

概要

チャット機能を実装する際によく利用されているRedisだが、AWSを利用する場合はどのサービスを選択すべきかがよくわかっていなかったので調べた。

 

選択肢

redisで検索すると以下の2つがヒットする。

  • Amazon MemoryDB for Redis
  • ElasticCache

これらのどちらを利用すべきか。
例えばチャット機能を実装したい場合、「AWS チャット」みたいに検索するとElasticCacheを利用するモデルが検索結果には多い。
ただ、MemoryDBの方が後発サービスらしく、こちらを使った方が良さそうにも思える。

間違ってreidsと検索しているが結果は変わらない

 

比較検討

しばらく調べてみて一番参考になりそうだったのが↓

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を使いたい。