2010-10-27 4 views
6

Я просматриваю документацию, и я немного смущен тем, как memcache выполняет внутреннюю балансировку нагрузки, если указано несколько серверов. Например:Использование нескольких серверов memcache в пуле

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

Будет ли установка и извлечение ключа «some_key» всегда попадающим на тот же сервер? Будет ли автоматически распределяться настройка и выбор альтернативных ключей, таких как «some_key_2» или «some_key_3», среди пула серверов? Что произойдет, если сервер добавлен или удален?

Точно так же, что происходит с 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]) 

Будет ли это автоматически устанавливать и получать каждый ключ от правого сервера? Нужно ли писать класс-оболочку?

Спасибо.

ответ

9

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

+0

Правильно, поэтому он будет прозрачно делать это, если в пуле несколько серверов? get_multi() будет автоматически извлекать правильные ключи с правильных серверов? – ensnare

+0

Это то, что он должен делать - библиотека memcached делает это под обложками. Если это не так, тогда есть ошибка. –

+0

Это здорово ... Я не знал, что это автоматически. Я думал, что должен написать класс-оболочку. Благодарю. – ensnare