PHP 的 Memcache 客户端所提供的 get 方法中,key 参数可以用 string 或 array 两种形式给出。详情请见PHP手册。
为了比较获取多个 key 的性能,我对这两种方式做了以下测试:
<?php
$mc = new Memcache();
$mc->connect('192.168.1.235', 11211);
/*
$mc->set('test/key/1', 'test/key/1');
$mc->set('test/key/2', 'test/key/2');
$mc->set('test/key/3', 'test/key/3');
$mc->set('test/key/4', 'test/key/4');
$mc->set('test/key/5', 'test/key/5');
$mc->set('test/key/6', 'test/key/6');
$mc->set('test/key/7', 'test/key/7');
$mc->set('test/key/8', 'test/key/8');
$mc->set('test/key/9', 'test/key/9');
echo 'done';
*/
$loop = 10000;
$start = microtime(true);
for ($i = 0; $i < $loop; ++$i) {
$mc->get('test/key/1');
$mc->get('test/key/2');
$mc->get('test/key/3');
$mc->get('test/key/4');
$mc->get('test/key/5');
$mc->get('test/key/6');
$mc->get('test/key/7');
$mc->get('test/key/8');
$mc->get('test/key/9');
}
echo microtime(true) - $start, "\r\n";
$start = microtime(true);
for ($i = 0; $i < $loop; ++$i) {
$mc->get(array('test/key/1','test/key/2','test/key/3',
'test/key/4','test/key/5','test/key/6',
'test/key/7','test/key/8','test/key/9'));
}
echo microtime(true) - $start, "\r\n";
在 Win7 Php 5.3.5 Cli 模式下的结果如下
#设置初始值在 Ubuntu Server 11.04 Php 5.3.5 Cli 模式下的结果如下
D:\test>php mc.php done
#运行get测试
D:\test>php mc.php
140.38006091118
15.962392091751
$ php mc.php不同OS的差异就不说了。看测试输入,使用数组的形式进行 multi get 性能会高不少。
3.911248922348
0.55850887298584