其中memcached扩展用到了libmemcached这个库,实现了分布式,能将不同的键保存到不同的服务器上:
http://php.net/manual/zh/memcached.addserver.php
注意,memcached扩展不支持Windows.
两者都支持持久连接,也都提供了session.save_handler支持.
持久连接就是说,每个PHP进程保持对MySQL/Memcached/Redis的连接,不会在脚本处理完成后断开,下次能够复用,这一切对脚本都是透明的.
持久连接:
$mc = new Memcache;
$mc->pconnect('127.0.0.1', 11211);
$mc->delete('post_id');
$mc->set('post_id', 'json');
$json = $mc->get('post_id');
$mc->replace('post_id', 'new_json');
?>
$mc = new Memcached('mc');
$mc->setOption(Memcached::OPT_LIBKETAMA_COMPATIBLE, true);
if (!count($mc->getServerList())) {
$mc->addServers(array(
array('mc1.example.com',11211),
array('mc2.example.com',11211),
));
}
?>
因为addServer/addServers函数不会检查是否存在持久连接,
所以需要使用getServerList来检查执行当前脚本的PHP-FPM进程中是否已经存在相同名字的长连接资源,
如果存在,就不要重复使用addServer/addServers方法来新增持久连接.