#プログラミング勉強日記
2021年5月6日
#ElastiCacheの特徴
ElastiCacheはデータをノードのメモリに保存する。これによって高速でデータの出し入れを行うことができる。
ただ、メモリにデータを保存しているため再起動などでノードが落ちるとデータがなくなってしまうので、注意が必要。
#Memcachedとは
Memcachedのクラスタは単純にノードを追加・削除して負荷を分散できる。しかし、これは自動検出の機能に依存している。
Memcachedはノードの状態をポーリングしてノードにアクセスをする。
ポーリングとは、「サーバーとクライアント」や「主システムと周辺機器」といった複数の機器を円滑に連携させる方法のひとつです。主に通信などの競合を回避するために、ホスト側が各機器に対して定期的に問い合わせを行い、条件を満たした場合に送受信や各種処理を行います。
引用:https://blogs.manageengine.jp/itom_what_is_polling/
Memcachedはマルチスレッドで動作するため、CPUのコア数を上げれば性能を上げられる。シンプルなデータしか扱うことができないので、複雑なデータを扱う場合はアプリ側で格納できる型に変更する必要がある。また、扱えるコマンドも少ない。
#Redisとは
Redisにはいくつかの種類があるが、Memcachedクラスターとの違いはクラスターのエンドポイントを持っていること。Redisクラスターもノードの数を加減することで負荷の分散ができる。
Redisはクラスターがエンドポイントを持っているので、アプリ側でポーリングする必要がない。
Redisはシングルスレッドで動作するため、CPUのコア数を上げてもMemcachedほどパフォーマンスの向上を期待できない。Redisは豊富なデータ型を使うことができるだけでなく、正規表現を用いたキーの検索などget/setにも機能が豊富。
#MemcachedとRedisの使い分け
##Memcachedを使うとき
- 単純なデータ型でいい場合
- マルチスレッドを使用する場合
- オブジェクトをキャッシュする必要がある場合
##Redisを使うとき
- 複雑なデータ型が必要な場合
- フェイルオーバーが必要な場合
- 永続化が必要な場合
#参考文献
Memcached と Redis の比較
ElastiCacheはMemcachedとRedisのどっちを選ぶ?