2012-02-01 63 views
0

我正在實現一個使用PHP的web服務器,它使用memcache來存儲一些頻繁訪問的數據。每個請求可能會更新內存緩存中的一個密鑰。關鍵是一個數組,我的更新將添加/刪除數組中的一些元素。Memecache密鑰同步

我的問題是如果多個請求到達並同時更新密鑰。 memcache是​​否提供了任何種類的同步機制。

我在谷歌和這裏搜索,但沒有找到很多有用的信息。

最佳, Xiaomo

回答

0

您需要在爲了做到這一點使用CAS值。它的工作方式是通過從服務器請求一個密鑰的cas號碼。然後您更新該密鑰的值並進行包含cas編號的設置。如果cas沒有改變,服務器將只更新密鑰。如果有,那麼在你做之前,你知道有其他人已經更新了數據,並且你可以再次獲得該密鑰的值和cas並重新嘗試更新。

*注意:我在這裏說過,你做了一個集合幷包含了cas號碼。如果您查看發送的二進制數據包,這是真實的,但在大多數sdk和ASCII協議中都有單獨的cas函數/命令。您想在更新時使用這些而不是設置的功能/操作。

做一個CAS在ASCII協議在這裏看到: http://code.sixapart.com/svn/memcached/trunk/server/doc/protocol.txt