什么是memcache.hash_strategy?

时间:2011-02-15 15:32:53

标签: php memcached


我想知道为什么有一个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');

我想念什么?

1 个答案:

答案 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

找到更多相关信息