2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

[ElasticCache] RedisとMemcachedの違いとは。

Last updated at Posted at 2022-01-06

はじめに

SAAの勉強をしていると避けては通れないElasticCache。
ハンズオン学習にはちょっと敷居が高い……!
それはまあいいんですけど、困ってしまうのは「 RedisとMemcachedのどちらを選択すればいいですか?」系の問題が出題されたときです。

結局RedisとMemcachedってなにが違うんだ!!!
なにが違うんだ!!!(2回目)
という自覚がAWS公式の方にあるのかは知りませんが、解説が提供されています。

公式の記事を読み込めば済む話ではあるのですが、勉強がてらRedisとMemcachedについて纏めてみます。

ElasticCacheとは

本題の前に、ElasticCacheのおさらいです。

ElasticCacheを一言で言えば、AWSの提供するインメモリデータストアです。
すべてのデータは**メインメモリ(主記憶装置)**にのみ保存および管理されます。
メインメモリに直接保存されるため、データの参照時にディスクにアクセスする必要がありません。補助記憶装置(HDD、SSD)に保存されるEBSやRDSと比べて、高速な書き込み、読み込みが可能です。

最小限の応答時間で済む一方で、インメモリであるがゆえの欠点も存在します。
・障害時にデータが失われてしまう恐れがある。
・トランザクション機能がないため、データに完全性がない。

従って用途も限られます。
公式によれば、ゲームリーダーボード、キャッシュなどに推奨されるようです。ElasticCacheという名称が示す通り、キャッシュに適したサービスということですね。

まとめておくと、

短長 内容
メリット 低レイテンシーかつマイクロ秒単位の読み書きが可能。
デメリット 障害時にデータが失われてしまう恐れがある。トランザクション機能がないため、データに完全性がない。

Redis vs Memcached

ElastiCache は、Redis と Memcached どちらかを選択することができます。
ポイントですが、Redis と MemcachedというのはAWS独自に開発されたデータストアではありません。サードパーティーの人気のあるオープンソースを、ElasticCache向きに使用しています。
RDSでmysqlやPostgreSQLを利用するのと似たような感覚ですね。
念のため、本記事はあくまでAWSにおけるRedisとMemcachedについての解説です。

どちらもインメモリなので、RDBMSと比べて高速という点は同様なのですが、それぞれに特徴があります。

以下、それぞれざっくり纏めてみます。

Redis

"リモートディクショナリサーバー"の略です。
メモリ内key-value型のデータストア(NoSQL)であることが特徴です。

NoSQL × インメモリって、最早速さに関しては向かうところ敵なしでは……?

実際非常に高速なインメモリデータストアで、インターネット規模のリアルタイムアプリケーションを強化することができます。

他にもRedisにはできて、Memcachedにはできない機能が多数あります。

Redisにできること(Memcachedにはできないこと)
・データ構造の選択
・スナップショット
・レプリケーション
・クラスタリング構成
・ディスクストレージへのデータの書き出し(バックアップ)
・トランザクション
・Pub/Subメッセージング
・Lua スクリプト
・大規模なリアルタイムの地理空間データを処理するための専用コマンド。
・SSL通信機能による暗号化

MemcachedにもMemcachedにしかできないことがありますよ(震え声)。

高速性と多様性が特徴のRedisは、
ゲーム、eコマース、医療、金融サービス、IoT などのリアルタイム性の求められるアプリケーションに適しています。

Memcached

メモリ上で、キーバリュー型揮発性キャッシュとして動作しています(AWS内部でどうなっているのかは、正直分かりません)。
マルチスレッドであるため複数の処理コアを使用できるのが特徴です。コンピューティング性能のスケールアップにより、多くの操作を処理できることを意味します。

ちなみに、マルチスレッドはRedisには無い機能です。
複数のコアを利用できる分、大きなデータセットに対してはRedisよりも優れたパフォーマンスを発揮できます。

スケーラブルで安全性に優れているのが特徴のMemcachedは、
ウェブ、モバイルアプリケーション、ゲーム、などの、頻繁にアクセスされるデータをメモリ内に置く必要が場合に適しています。

まとめ

名称 ユースケース
Redis バックアップを始め、様々な機能が欲しい場合はこちら
Memcached マルチスレッドが必要な場合はこちら

どっちがいいのかは、正直分からないです。
調べれば調べるほどRedisとMemcachedの違いに頭は悩まされるはめになりました。
ユースケースによって最適なものは変わるよね、としか。
とはいえ、試験で出た場合は予め用意された答えを当てにいかなければなりません。
試験対策としては、こちらを参考にしてみてください。

おわりに

悩ましいです。
奥が深いというか見えない話題なので、折りを見て更に調べてみようと思います。

参考
Redis作者自身によるRedisとMemcachedの比較
Redisとmemcachedを比較
ElastiCacheはMemcachedとRedisのどっちを選ぶ?

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?