2010-10-27 6 views
6

Estoy revisando la documentación y estoy un poco confundido sobre cómo Memcache realiza el balanceo de carga interno si se especifican varios servidores. Por ejemplo:Uso de múltiples servidores de Memcache en un grupo

import memcache 
mc.set_servers(['127.0.0.1:11211','127.0.0.1:11212',]) 
mc.set("some_key", "Some value") 
print mc.get("some_key") 

¿El ajuste y la recuperación de la tecla "some_key" siempre afectan al mismo servidor? ¿La configuración y recuperación de claves alternativas, como "some_key_2" o "some_key_3", se distribuirá automáticamente entre el grupo de servidores? ¿Qué sucede si se agrega o elimina un servidor?

Del mismo modo, lo que sucede con get_multi:

import memcache 
mc.set_servers(['127.0.0.1:11211','127.0.0.1:11212',]) 
mc.set_multi({42: 'adams', 46 : 'and of me'}) 
print mc.get_multi([46, 42]) 

Será este establecer y recuperar cada tecla derecha desde el servidor de forma automática? ¿Es necesario escribir una clase contenedora?

Gracias.

Respuesta

9

memcached coloca las claves en los servidores en función de un hash de la clave. Siempre que la configuración de su servidor no cambie, una clave determinada siempre aterrizará en un servidor determinado.

+0

¿Correcto, entonces lo hará de forma transparente si hay varios servidores en la agrupación? get_multi() recuperará automáticamente las claves correctas de los servidores correctos? – ensnare

+0

Eso es lo que se supone que debe hacer, la biblioteca de memcached lo hace bajo las sábanas. Si no lo está haciendo, entonces hay un error en alguna parte. –

+0

Eso es genial ... No sabía que automáticamente hiciera esto. Pensé que tenía que escribir una clase contenedora. Gracias. – ensnare

Cuestiones relacionadas