2011-02-15 25 views
5


Me pregunto por qué hay una configuración memcache.hash_strategy php.ini. El manual dice:¿Para qué sirve memcache.hash_strategy?

Controla qué estrategia utilizar al asignar claves a los servidores. Establezca este valor en consistente para permitir un hash consistente que permita agregar o eliminar servidores del grupo sin hacer que las claves sean reasignadas. Establezca este valor en los resultados estándar en la estrategia anterior que se usa.

¿Pero no es el programador mismo la clave de mapas para los servidores? He aquí algunos pseudo-código:

$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'); 

¿Qué me he perdido?

+1

Vea http://stackoverflow.com/questions/4717559/multiple-memcached-servers-question sobre cómo usar correctamente múltiples servidores de Memcache. – rik

+0

¡Gracias, rik, ahora está claro! – zapadlo

Respuesta

3

Estás utilizando algunos ejemplos antiguos. La forma moderna de utilizar Memcache es como tal:

$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'); 

Ahora el código Memcache utilizará ahora su método de hash para determinar el servidor. Puedes usar dos opciones. El hashing constante reducirá el efecto de eliminar un servidor de la lista. Donde el hashing tradicional es básicamente el código que tienes arriba. Puede encontrar más sobre esto en http://www.last.fm/user/RJ/journal/2007/04/10/rz_libketama_-_a_consistent_hashing_algo_for_memcache_clients