memcahce多台操作不同服务器set,get值不一致

前段时间发现一个很聊斋的问题!

  
$memObj.addServer(ip1);
$memObj.addServer(ip2);

按道理来讲同一个key只能在一台机子上存在有。
流程:

  
1.a同事通过$memObj.set($key);//服务器a
2.b同事通过$memObj.get($key);//服务器b

这里获取不到的概率很高。因为前些日子是在线上发生这样的问题,现在已经无法测试了。但是手动或者通过命令设置a,b同事都能获取到。甚是怪哉呀。

  
3.同一段代码$memObj.get($key);放不同的服务器显示的结果不一致。

有大侠遇到过这样的问题吗?
其实我最终想问的是:set,和get的落到不同的memcache机子上的原因。

无奈测试怎么都是对的。因为前段时间有俩台memcache,线上一直在跑评论所以时间有限,最终砍掉一台memchahe。准备用mongodb

评论 (0)链接2011-09-07 

A机器和B机器的addServer顺序是否一样,如当addServer时顺序不一样有可能引起你的问题。
$memObj.addServer(ip1);
$memObj.addServer(ip2);

hash算法为:crc32(key) % current_server_num

或者有时取不到是因为memcached存储满了,memcached会自动清除旧数据。

以上是我的猜测

该答案已被锁定,无法对其进行评论,编辑及投票。
()
评论 (0)链接 • 2011-09-16
德问是一个专业的编程问答社区,请 登录注册 后再提交答案