ElasticCacheではmemcachedとredisの2つのエンジンをサポートしています。
memcachedとredisの特徴を把握して、適切なエンジンを選ぶことが大切です。
memcached
・一時的なキャッシュとして使われる
・ノード間の複製は行わない
・障害が発生するとデータは消える
redis
・マスタ・スレーブ型
・redis自体でデータストアとしても利用可能

 

ElasticCacheを利用する際のエンジンの選択基準

ElasticCacheではmemcachedとredisの2つのエンジンをサポートしていますが、エンジンの機能に大きな違いがあるので、用途に応じたものを選ぶ必要があります。

memcachedを選択した方が良い場合
・モデルを簡素にしたい
・複数のコア・スレッドのあるノードを実行する
・スケールアウトまたはスケールインする予定がある
・データベースなどをキャッシュする

redisを選択した方が良い場合
・文字列・ハッシュ・リストなどの複雑なデータを用いる
・プライマリーノードに障害が発生した時に、自動的にフェイルオーバーが行われる必要がある
・読み取るデータ量が多いので、プライマリから複数のリードレプリカにレプリケートする
・キーストアに永続性を求める

 

 

揮発性と永続性

KVSは揮発性・永続性によっても、分類できます。

揮発性KVSは、メモリ上にデータを格納します。
メモリを使いために高速でデータを操作できますが扱えるデータ量が限られるために、古いデータや使用頻度の低いデータは消去されてしまいます。

永続性KVSは、ディスク上にデータを格納します。
処理速度は遅くなりますが扱えるデータ量が大きくなるために、いつまでもデータを保存することが可能です。

memcachedとredisは揮発性KVSに分類されますが、redisはディスクにバックアップする機能がありますので永続性もあります。

 

 memcachedとredisの特徴

memcachedの特徴
・データをメモリ上に格納することで、データベースの負荷を軽くする
・一時的なキャッシュとして使われる
・ノード間の複製は行わない
・障害が発生するとデータは消える

redisの特徴
・データをメモリ上に格納して、高速で読み書きを行う
・マスタ・スレーブ型
・edis自体でデータストアとしても利用可能

 

 

Memcached・Redis間の移行について

MemcachedからRedisまたはMemcachedからRedisへの自動移行は、Amazon ElastiCacheでは現在サポートされていません。

しかし、Memcachedクライアントを使ってMemcachedクラスターから読み込んだデータをRedisクライアントを使ってRedisクラスターに書き込むことは可能です。
また、Redisクライアントを使ってRedisクラスターから読み込んだものを、MemcachedクライアントでMemcached クラスターに書き込むこともできます。

 

 

本サイト上に掲載されているまとめ記事が、毎週ステップメールで受け取ることもできます。

 

 

参考文献