Для чего нужен memcache.hash_strategy? - PullRequest
5 голосов
/ 15 февраля 2011


Интересно, почему есть настройка php.ini для memcache.hash_strategy?В руководстве написано:

Управляет тем, какую стратегию использовать при сопоставлении ключей с серверами.Задайте для этого значения непротиворечивое значение, чтобы включить согласованное хеширование, которое позволяет добавлять или удалять серверы из пула без перераспределения ключей.Установка этого значения в стандартные результаты приводит к использованию старой стратегии.

Но разве сам программист не сопоставляет ключи с серверами?Вот некоторый псевдокод:

$memcacheServerList = array('host1', 'host2', 'host3');<br> $key = 'my_key';<br> $memcacheServerIndex = crc32($key) % sizeof($memcacheServerList); </p> <pre><code>$memcache = new Memcache(); $memcache->connect($memcacheServerList[$memcacheServerIndex], 11211); $memcache->add($key, 'this is value');

Что мне не хватает?

1 Ответ

3 голосов
/ 19 февраля 2011

Вы используете несколько старых примеров.Современный способ использования 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...