Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php memcache.hash_的策略是什么?_Php_Memcached - Fatal编程技术网

Php memcache.hash_的策略是什么?

Php memcache.hash_的策略是什么?,php,memcached,Php,Memcached,我想知道为什么会有memcache.hash_策略php.ini设置。手册上说: 控制将密钥映射到服务器时要使用的策略。将此值设置为“一致”以启用一致哈希,从而允许在不重新映射密钥的情况下从池中添加或删除服务器。将此值设置为标准会导致使用旧策略 但程序员自己不是把钥匙映射到服务器吗?下面是一些伪代码: $memcacheServerList=array('host1','host2','host3') $key='my_key' $memcacheServerIndex=crc32($key)


我想知道为什么会有memcache.hash_策略php.ini设置。手册上说:

控制将密钥映射到服务器时要使用的策略。将此值设置为“一致”以启用一致哈希,从而允许在不重新映射密钥的情况下从池中添加或删除服务器。将此值设置为标准会导致使用旧策略

但程序员自己不是把钥匙映射到服务器吗?下面是一些伪代码:


$memcacheServerList=array('host1','host2','host3')
$key='my_key'
$memcacheServerIndex=crc32($key)%sizeof($memcacheServerList)


我错过了什么?

您正在使用一些旧的示例。使用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代码将使用其哈希方法来确定服务器。您可以使用两个选项。一致的哈希将减少从列表中删除服务器的影响。其中,传统的哈希基本上就是上面的代码。你可以在

上找到更多关于如何正确使用多个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');