2010-07-28 49 views
0

我們正在Django(Python)生產中使用一組memcached服務器進行緩存,嘗試將cmemcache和python-memcache都作爲API。問題是高併發性,我們開始有重複的鍵值對,也就是說我們有一個鍵的多個值。有沒有人有類似的情況,殺人是什麼?memcached返回的重複鍵值對

由於memcached服務器本身並未與每個服務器進行通信以維護鍵值對的單一性,因此此任務留給客戶端庫,因此我們正試圖進一步瞭解cmemcache和python-memcache的工作原理。

回答

0

這是一個更大的問題:是否有冗餘數據,或爲查詢獲得多個結果?

如果前者是問題,那麼你有一個討厭的併發問題需要解決。

但是,如果後者存在問題,爲什麼不直接給每個在memcache中存儲值的主機一個唯一的標識符,並將其添加到任何鍵?

1

客戶端應根據其密鑰找出哪個memcache服務器上存在值。如果您使用兩個不同的客戶端(或同一客戶端的兩種不同配置),則他們可能使用不同的算法將密鑰映射到服務器,從而將相同密鑰的值發送到兩個不同的服務器。

您可能想切換到pylibmcpython-libmemcached。當我去年查看了python memcache客戶端時,您提到的兩個客戶端都已退休或已損壞,或者兩者兼而有之。