[memcached] みんなPHP libmemcachedモジュールを使うべきという話というかベンチマーク

よく使われているPECLのmemcacheモジュールは本家memcachedプロトコルを自分でしゃべるけど、PHP libmemcachedはlibmemcachedのPHP用ラッパー(ややこしい)

で、何がいいかというと、PECLのmemcacheは実はmemcachedプロトコルすべてサポートしていないようだ。(ex. mget)←いまいち自信がないので突っ込みください。

で、php libmemcachedはそれらをサポートしている。
ということは、もし広く伝播するのに必要なのは、もうあと、実績とやる気だけなのでみんなでどんどん使うといいと思う。

ついでにベンチマーク計ってみた

接続についてやや、PHP libmemcachedが遅いが、そのほかは5%くらいPHP libmemcachedが早いという結果が出た。

VMWare上のFedoraの話なので「複数台」とか「高負荷」とかではためせてないです。お仕事おちついて 、どこかに検証環境を提供してくれる足長おじさんがいたら(これに限らず)ベンチマーク試験を試してみたいと思います。

start ();
//$memcached = new memcache(); //memcache
$memcached = new memcached();  //memcached

$Timer->setMarker('init');
$ret = $memcached->addserver('localhost', 11211);
$Timer->setMarker('connect');
$key = 'key';
for($i = 0; $i <= 10000; $i++) {
  $memcached->set($key . mt_rand(0, 1000), 'val1');
}
$Timer->setMarker('dataset');
for ($i = 0; $i < 10000; $i++) {
  $memcached->get($key . mt_rand(0, 1000));
}
$Timer->setMarker('dataget');
$Timer->stop ();
$Timer->display (); 
libmemcached
                                                                                                          • -
marker time index ex time perct
                                                                                                          • -
Start 1223109824.53524900 - 0.00%
                                                                                                          • -
init 1223109824.53535600 0.000107 0.01%
                                                                                                          • -
connect 1223109824.53549100 0.000135 0.01%
                                                                                                          • -
dataset 1223109825.50252200 0.967031 51.45%
                                                                                                          • -
dataget 1223109826.41487500 0.912353 48.54%
                                                                                                          • -
Stop 1223109826.41491200 0.000037 0.00%
                                                                                                          • -
total - 1.879663 100.00%
                                                                                                          • -

memcached

                                                                                                          • -
marker time index ex time perct
                                                                                                          • -
Start 1223109792.36360200 - 0.00%
                                                                                                          • -
init 1223109792.36368800 0.000086 0.00%
                                                                                                          • -
connect 1223109792.36384400 0.000156 0.01%
                                                                                                          • -
dataset 1223109793.37856200 1.014718 49.95%
                                                                                                          • -
dataget 1223109794.39501000 1.016448 50.04%
                                                                                                          • -
Stop 1223109794.39504500 0.000035 0.00%
                                                                                                          • -
total - 2.031443 100.00%
                                                                                                          • -

(接続も複数回まわせばよかった。。。)