我有一个由10个memcaches组成的集群,使用一致的散列。当在不可用的服务器上搜索传递给memcached_get()的键时,我只得到MEMCACHED_SERVER_MARKED_DEAD响应(返回值)。
在这种情况下,我希望密钥应该被重新分发到下一个可用的服务器,并且我应该从下一个memcached_get()调用中获得NOTFOUND。然而,我仍然得到MEMCACHED_SERVER_MARKED_DEAD,所以我不能设置一个新值。
我发现我可以打电话给memcached_behavior_set(..., MEMCACHED_BEHAVIOR_DISTRIBUTION)。这会导致哈希重分布,然后它就会像我希望的那样工作。然而,我不认为这是一个好的方法。是吗?
发布于 2011-07-17 21:22:08
我自己找到了答案。
https://bugs.launchpad.net/libmemcached/+bug/777672
应用补丁解决了我所有的问题。注意,我想知道它从0.39开始就已经坏了,没有人关心它。
发布于 2011-07-17 02:58:43
通常,如果您正在处理多个memcached池,则希望从一开始就启用MEMCACHED_BEHAVIOR_DISTRIBUTION。所以,是的,这个解决方案是可行的。
如果您还有进一步的问题,请查看MEMCACHED_BEHAVIOR_REMOVE_FAILED_SERVERS,它将在x次失败后自动从池中清除失败的服务器。
https://stackoverflow.com/questions/6677111
复制相似问题