我想知道为什么有一个memcache.hash_strategy php.ini设置。手册说:
控制将密钥映射到服务器时使用的策略。将此值设置为一致以启用一致性散列,从而允许在池中添加或删除服务器,而不会导致重新映射密钥。将此值设置为标准会导致使用旧策略。
但是,程序员自己不是映射服务器的关键吗?这是一些伪代码:
$memcacheServerList = array('host1', 'host2', 'host3');
$key = 'my_key';
$memcacheServerIndex = crc32($key) % sizeof($memcacheServerList);
$memcache = new Memcache();
$memcache->connect($memcacheServerList[$memcacheServerIndex], 11211);
$memcache->add($key, 'this is value');
$memcache = new Memcache();
$memcache->connect($memcacheServerList[$memcacheServerIndex], 11211);
$memcache->add($key, 'this is value');
我想念什么?
答案 0 :(得分:3)
您正在使用一些旧示例。使用memcache的现代方法是这样的:
$servers = array(
"10.1.1.1",
"10.1.1.2",
"10.1.1.3",
);
$m = new Memcache();
foreach($servers as $server) {
$m->addServer ( $server );
}
$m->add($key, 'this is value');
现在,memcache代码现在将使用其散列方法来确定服务器。您可以使用两个选项。一致的散列将减少从列表中删除服务器的影响。传统散列基本上就是上面的代码。您可以在http://www.last.fm/user/RJ/journal/2007/04/10/rz_libketama_-_a_consistent_hashing_algo_for_memcache_clients
找到更多相关信息