我有一组10个内存缓存,使用一致的散列。当在不可用的服务器上搜索传递给memcached_get()
的密钥时,我只得到MEMCACHED_SERVER_MARKED_DEAD
响应(返回值)。
在这种情况下,我希望密钥应该重新分配给下一个可用的服务器,我应该从下一个NOTFOUND
调用中获得memcached_get()
。但是我仍然得到MEMCACHED_SERVER_MARKED_DEAD
,因此我无法设置新值。
我发现我可以致电memcached_behavior_set(..., MEMCACHED_BEHAVIOR_DISTRIBUTION)
。这会导致哈希重新分配,然后它可以正常工作。但是,我认为这不是一个好方法。是吗?
答案 0 :(得分:-1)
通常,如果要处理多个memcached池,则需要从头开始启用MEMCACHED_BEHAVIOR_DISTRIBUTION。所以是的,解决方案将起作用。
如果您还有其他问题,请查看MEMCACHED_BEHAVIOR_REMOVE_FAILED_SERVERS,它会在x次失败后自动从池中清除故障服务器。
答案 1 :(得分:-1)
我自己找到了答案。
https://bugs.launchpad.net/libmemcached/+bug/777672
应用补丁解决了我所有的问题。请注意,我不知道自从0.39以来它已被打破,没有人关心。