fluid_27’s blog

勉強した内容をアウトプットするためのブログ

Elasticache の Memcached と Redisの違いって何よ?

SAAに向けてAWS勉強していて表題のような疑問を抱いたので、調べてみました。

 

 

そもそもElasticacheとは?

完全マネージド型のインメモリデータストアです。

Amazon ElastiCacheを使用すると、インメモリデータストアをシームレスにセットアップ、実行、スケーリングができ、データをノードのメモリに保存するのでかなり高速に処理できます。

 

ほうほう。。えっと、ノードって何でしたっけ??

 

ノードとは

ElastiCacheでは最小の構成単位を「ノード」と呼びます。EC2で言うところのインスタンスに相当するものです。

 

ちなみに、、

クラスターとは

ノードを組み合わせた集合体をクラスターと呼びます。ノードに直接接続してしまうと、もしそのノードに問題が発生した場合には新しいノードのアドレス(エンドポイント)をアプリケーション側で書き換えなくてはなりませんし、サービスの成長と共に負荷が上がってくるとノードの台数を増やして負荷やメモリ(キャッシュ)を分散したりといった要件も出てきます。クラスター構成を組んでおいて、常にアプリケーションはエンドポイントを見ておくようにすればノードの増減によってアプリケーションに変更を行う必要がありません。よって、運用を行う上でこのクラスター機能という観点は非常に大事になってくるのです。

 

なるほど。

ということで、

Elasticacheとは「フルマネージド型でスケーラブルなインメモリデータストア」ということですな。

 

 で、そのElasticacheにはエンジンが下記の2種類存在する。

 

それぞれ特徴としてはザックリいうと

  • Amazon ElastiCache for Memcachedシンプルな処理向け」
  • Amazon ElastiCache for Redisは「高度なデータ構造、消えたら困るデータ処理向け」

という違いがあるみたいっす。

 

より詳しく見ていくと

Memcached

Memcachedクラスターは単純にノードを追加したり減らしたりして負荷を分散することができる。

この仕組みは自動検出と呼ばれる機能に依存している。クライアントアプリケーション側で定期的にノードの状態をチェックし、その情報を元にノードにアクセスしにいっている。

 

Redis

Redisにはいくつか種類があるらしく、

  • クラスターモードを有効にするか無効にするか
  • シャードを有効にするか無効にするか

選択できるとのこと。

だが、Memcachedとの大きな違いはクラスターのエンドポイントを持っていること。

Memcachedはノードの状態をポーリングしてノードにアクセスしにいく形なのに対し、Redisの場合はクラスターがエンドポイントを持っており、アプリケーション側でポーリングする必要がない。 

 

クラスターモードを有効にする

スケールアウト・インが可能になる。

 

シャードを有効にする

また、シャードを有効にすると、レプリケーションが可能になり、1つのプライマリノードに最大5つまでのレプリカノードを登録することができる。

常にデータのバックアップをレプリカノードで取っておいて、もしプライマリノードで故障が発生した場合にはレプリカノードが昇格してプライマリノードになることができる。そして新たなレプリカノードが追加され、これにより障害に対して可用性を担保している。 

 

 といった違いがあるみたいっす。

 

まとめ

正直、初学者の自分としては全て理解できているとは言い難いですが、

今の時点では

ElastiCacheは「フルマネージド型なインメモリデータストア」であり、

Memcachedを選択すると、「あくまでシンプルにノードの増減で処理負荷を分散させる」。

Redisを選択すると、「スケーラブルに加えて耐障害性が上がる」。

 

という風に理解してます。

初学者なので、認識に誤りがあるかもしれません。

その際は都度更新していこうと思います。

 

参考サイト

https://aws.amazon.com/jp/elasticache/memcached/

https://dev.classmethod.jp/articles/which-choice-redis-memcached/

https://dev.classmethod.jp/articles/elasticache-is-very-good-lets-review/

https://www.skyarch.net/column/amazon-eelasticache/