我有两个服务器memcached用于将缓存存储在PHP应用程序中。工作正常,但是当一台服务器出现故障时,找不到密钥。
在此示例中,192.168.0.10处于关闭状态。有时找到密钥,有时找不到。
我需要使用两台服务器,如果只有一台服务器,它将继续工作。
$servers = array(
array('192.168.0.40', 11211),
array('192.168.0.10', 11211)
);
$mc = new Memcached('memcached');
$mc->setOption(Memcached::OPT_LIBKETAMA_COMPATIBLE, true);
$mc->setOption(Memcached::OPT_DISTRIBUTION, Memcached::DISTRIBUTION_CONSISTENT);
$mc->setOption(Memcached::OPT_SERVER_FAILURE_LIMIT, 2);
$mc->setOption(Memcached::OPT_REMOVE_FAILED_SERVERS, true);
$mc->setOption(Memcached::OPT_AUTO_EJECT_HOSTS, true);
$mc->setOption(Memcached::OPT_TCP_NODELAY, true);
$mc->setOption(Memcached::OPT_CONNECT_TIMEOUT, 10);
if (count($mc->getServerList() < 1)) {
$mc->addServers($servers);
}
编辑
如果我两次拿到钥匙,首先不知道值,第二次得到...
var_dump($mc->get('key')); // false
var_dump($mc->get('key')); // value