LoginSignup
42
31

More than 5 years have passed since last update.

結局のところmemcacheとredisどっちがいいの?という問題に対する私的結論サマリ

Posted at

問題の概要

memcacheはもう古い! 次はRedisだ! と言われてから幾星霜、意外とあちこちで生き残っているmemcache。新規でmemcache使ってるというお話もちらほらと耳にするけれど、実際のところそれいいの? どうなの? どっちがいいの? ということで自分なりの結論を出すために調べてみました。

まずは結論

悩んだらRedis

その理由

  • memcacheとredisは、費用面、パフォーマンスについては大差はない。
    • 唯一、使用するメモリ量がredisのほうが若干多くなりやすいらしいけれどそれも格納するデータの内容次第で必ずしもそうであるとは言い切れない(らしい)。
    • いっぽうで使用しなくなったメモリの解放についてはRedisのほうが優秀。(FLUSHの時だけの可能性はある)
    • 個人的には初期の学習コストも変わらないと思う(どっちも簡単)(素晴らしい)
  • memcacheのできることはRedisもできる。Redisのできることのうちmemcacheにはできないことがある。例えば以下。
    • データの永続化(ただし永続化設定するとその精密さに応じてパフォーマンスは下がる)
    • master/slave構成
    • 暗号化
    • ソート
  • 使用するケースや規模が事前に正しく決められるならmemcacheのほうがいい場合もある。
    • ただし大抵の場合正しく決められない。
    • 後から(稼動後数年経過も含む)使い方が変わるとかいう場合もある。
    • システムは生き物だからね!
  • だから”念のため”Redisにしておくほうがいい
    • 必要になったら全部memcacheからredisに置換するぜー!って覚悟のあるひとはとりあえずなんでもいい。せっかくだから俺はmemcacheを選ぶぜ!でいい。
    • しかしRedisでも別にいい。
    • Redisとmemcacheの併用という可能性はサーバ費用の問題があるので除外した。
    • なお、永続化が必要なデータ/永続化が不要なデータが混在している場合それをRedis/memcacheを併用して使い分けるっていう手も考えたけれど(1システム内にRedisが2種類あるとわかりにくいとか云々)、永続化の要不要の判断をミスった場合のことを考えたら、もういっそ全部永続化でいいよ! ね!(expireはつけよう)

参考

なお、本当にすごくどうでもいい話として

名前的にはmemcacheのほうが好きです。なんとなく。

42
31
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
42
31