<beitmemcached> <add key="name1" value="server1:port" /> <add key="name2" value="server1:port,server2:port,server3:port"/> </beitmemcached>
我使用的客戶端是BeITMemcached,配置文件可以有兩種方式,如上面代碼,有單台配置和多台配置
問題:
在用單台服務器配置時,如果這台memecache服務器掛掉的話,那麼客戶端這邊該緩存節點就使用不了了,影響程序的運行
在用多台配置時,如果其中一台掛掉,你存入緩存的時候,客戶端會根據你緩存的key值,用一致性hash算法來選擇存入哪台緩存服務器,如果你運氣不好,正好存到了那台有問題的服務器上,對不起,寫入失敗。
解決方案:
使用多台配置方案,修改客戶端源代碼,如果其中一台服務器掛掉,在緩存操作失敗的時候,將該有問題的緩存服務器剔除客戶端集合,比如有A,B,C三台memcache服務,如果B掛了,在操作緩存的時候,會有異常,這時候將B從該序列中剔除,只使用A,C來進行操作;
設定一個檢測間隔時間,每次操作緩存時,在間隔時間之後,都會檢測有問題的服務器,如果服務器恢復正常,則將其重新加入緩存服務器集合中。
下載地址:http://pan.baidu.com/s/1eQtOO6Y
其他解決辦法:
可以使用memagent來對memcache進行集群配置,不過我感覺每台服務器都要安裝一個軟件,各種配置比較麻煩,我的方法比較簡單,自己感覺還是很實用的。