本文共 1248 字,大约阅读时间需要 4 分钟。
比如现在我们要设置缓存1秒后过期,用memcached默认的配置(默认采用余数分布算法--Memcached::DISTRIBUTION_MODULA),代码应该这样写
$servers = array ( 0 => array ( 0 => '127.0.0.1', 1 => 11212 ), 1 => array ( 0 => '127.0.0.1', 1 => 11213 ) );$cache = new Memcached();$cache->addServers($servers);$cache->set('cclehui_test',1,time()+1);//1秒后过期sleep(1);var_dump($cache->get('cclehui_test'));如果采用一致性hash算法,代码确应该这样写
$servers = array ( 0 => array ( 0 => '127.0.0.1', 1 => 11212 ), 1 => array ( 0 => '127.0.0.1', 1 => 11213 ) );$cache = new Memcached();$cache->setOption(Memcached::OPT_DISTRIBUTION, Memcached::DISTRIBUTION_CONSISTENT);$cache->setOption(Memcached::OPT_LIBKETAMA_COMPATIBLE, TRUE);$cache->addServers($servers);$cache->set('cclehui_test',1,1);//1秒后过期sleep(1);var_dump($cache->get('cclehui_test'));
我们都知道memcache的分布式是通过客户端来实现的,在php中也是如此,php 的memcached扩展中就存在如标题所述的一个Bug,关于这个bug的解释可以参考:
转载地址:http://iksmb.baihongyu.com/