2013年1月28日月曜日

memcacheとmemcachedの違い

memcachedをphpから利用するモジュールで、
memcacheモジュールとmemcachedモジュールという2つがあって、
頭がごちゃごちゃしたのでまとめておきたいと思います:(;゙゚'ω゚'):

社内でlibmemcachedって何に必要なんだっけ・・・?
memcachedサーバー側で必要でクライアント側にはいらないんじゃないっけ?
とか混乱してたのはナイショシーッ! d( ゚ε゚;)

■PECL::memcache
PECL::memcacheのURL
・PHP4.3.3以上で使用可能
・インストール時に他のライブラリに依存しない
・分散が出来る。(複数サーバーに対応)(PECL::Memcacheが2.0以降)※1
・cas対応(3.0.0以降)※2

■PECL::memcached
PECL::memcachedのURL
・PHP5.2.0以上で使用可能。
・memcacheよりも利用できる機能が多い(Igbinaryという文字列ではなくてバイナリ形式でのシリアライズ方式もサポートなど?)
・別途libmemcachedモジュールが必要
・拡張があったときにlibmemcachedに追従するだけなので対応が早いことが予測される?
・分散が出来る。(複数サーバーに対応)※1
・cas対応※2
・パフォーマンスはこっちがの良い?※3

phpから利用するモジュールではなくて、memcachedの本体は・こちらになります。
マスコット的なキャラクターがカワ(・∀・)イイ!!

※1・・・自動的に複数memcachedサーバーに分散して保存してくれるので、全体で大きなサイズのmemcachedサーバーとして使用することが可能。
※2・・・set時に他のプロセスが更新されてないかどうかを確認してから更新するという処理が行える。
※3・・・こちらのサイトを参照PHPでmemcachedを使うときのモジュールパフォーマンス比較


こちらはリビドーに赴くままlibmemcachedをPHPから使ってみるから抜粋
追記: kamipoさんより、はてブのご指摘でPECL::memcacheも3.0.0(alpha)より、casをサポートしているというご指摘いただきました。
よくよく見てみると確かにCasに限らずappendやバイナリプロトコルのサポートなどいままでほしかった機能が実装されています。(どんだけやる気なんだと作者に対して強く尊敬の念をいだきました)安定性やなどかんがみると、PECL::memcacheは非常に有力な候補となると個人的には思いますのでこれは別途調査してみたいとおもいますし皆様も選択の際はぜひ頭の隅にいれていただければ幸いです。
と、書かれているので、どちらもあまり機能的には差は無いのかもしれません。

ただ、グーグル先生にmemcachedを利用した複数サーバーの分散方法を調べてみると、
memcachedを利用した方法が圧倒的に多い気がします(´ヘ`;)ウーム…

最初は使えなかったという点のせいで、機能的な点でmemcachedが(・∀・)イイ!!
って事になってるっぽいですね。

そんな弊社もmemcachedを利用しています(`・ω・´)シャキーン
ただ、一部のサーバーでPHP5.1を利用している箇所があり、
そこではmemcacheを利用しています。

パフォーマンス的には、 こちらのサイトでパフォーマンスの比較をされていますが、
memcached モジュールのほうが早いという結果になりました。と書かれています。

インストールに関しては、他のモジュールに依存しないという点では、memcacheのが(・∀・)イイネ!!

とりあえず、memcachedをずっと使っているのでこっちを使っていこうかとは思います!(`・ω・´)シャキーン

以上(`・ω・´)ゞビシッ!!
参考URL

2 件のコメント:

  1. 大変参考になりました。
    ところで、「memcacheモジュールとmemcacedモジュールという2つがあって」、とありますが、memcacedではなく、memcachedではありませんか(hが抜けてる)?

    返信削除
  2. 誤字ですみません(´;ω;`)ウッ…

    ご指摘ありがとうございます(`・ω・´)ゞビシッ!!

    返信削除