2010-10-27 6 views
6

Sto esaminando la documentazione e sono un po 'confuso su come memcache esegue il bilanciamento del carico interno se sono specificati più server. Per esempio:Utilizzo di più server Memcache in un pool

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") 

Sarà l'impostazione e il recupero di chiave "some_key" sempre colpito lo stesso server? L'impostazione e il recupero di chiavi alternative, come "some_key_2" o "some_key_3", verranno automaticamente distribuiti tra il pool di server? Cosa succede se un server viene aggiunto o cancellato?

Allo stesso modo, ciò che accade 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]) 

Sarà questo automaticamente impostare e recuperare ogni tasto dal server giusto? È necessario scrivere una classe wrapper?

Grazie.

risposta

9

memcached inserisce chiavi sui server in base a un hash della chiave. Finché l'impostazione del server non cambia, una determinata chiave verrà sempre trasferita su un determinato server.

+0

Giusto, quindi lo farà in modo trasparente se ci sono più server nel pool? get_multi() recupererà automaticamente le chiavi giuste dai server giusti? – ensnare

+0

Questo è quello che dovrebbe fare - la libreria memcached lo fa sotto le copertine. Se non lo fa, allora c'è un bug da qualche parte. –

+0

È grandioso ... Non sapevo che lo facesse automaticamente. Pensavo di dover scrivere una lezione di wrapper. Grazie. – ensnare