2010-10-27 33 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 2010-10-27 22:09:59

+0

這就是它應該做的 - memcached庫在封面下執行。如果它沒有這樣做,那麼在某個地方有一個bug。 – 2010-10-27 22:18:52

+0

太棒了......我不知道它會自動做到這一點。我以爲我不得不寫一個包裝類。謝謝。 – ensnare 2010-10-27 22:25:27