我们的多个应用上都应用了memcached来做cache
但现在的应用的模式都一样
只使用一台memcached服务器
这样当改服务器挂掉后
所有的cache数据全都没有了
只能重新生成

其实,memcached本身是支持多个server的
也能实现cache的分布式存储
比如,对于python,我们可以这样来初始化

client = ['192.168.95.50:11222','192.168.95.51:11222']
mc = memcache.Client(client,debug=0)


这样,当我们set数据时
memcahced的client会根据key的hash值和服务器的数目取模来计算出该key对应的server
然后将key和value保存在对应的server的memcached中
get取数据也类似,到对应server上去取

采用多server,需要注意的地方:

1.由于它是按照key和服务器数目来计算对应server
   所以,我们自己部署在多server上的app应用
   在初始化client时,必须使用同样的配置
   也即服务器列表必须完全一致
   否则,可能会出现不同的app应用计算某个key对应的server不一致的情况

2.如果有一台memcached服务器出现了问题
   不会影响其它服务器的cache数据,只是该server的cache全部丢失
   对于python的client,会自动检测服务器的情况
   发现某个server挂了后,就不会往该server上set和put数据了
   当server起来后,就会又恢复正常
   这样,可能会造成在down掉的那短时间内
   同一个key数据可能会存放在2个server上