0

我有一个由 10 个内存缓存组成的集群,使用一致的哈希。memcached_get()当在不可用的服务器上搜索传递给的密钥时,我只会得到MEMCACHED_SERVER_MARKED_DEAD响应(返回值)。

在这种情况下,我希望密钥应该重新分配到下一个可用服务器,并且我应该NOTFOUND从下一个memcached_get()调用中获取。但是我仍然得到MEMCACHED_SERVER_MARKED_DEAD,所以我无法设置一个新值。

我发现我可以打电话memcached_behavior_set(..., MEMCACHED_BEHAVIOR_DISTRIBUTION)。这会导致哈希重新分配,然后它可以按我的意愿工作。但是,我认为这不是一个好方法。是吗?

4

2 回答 2

-1

如果您正在处理多个 memcached 池,通常您希望从一开始就启用 MEMCACHED_BEHAVIOR_DISTRIBUTION。所以是的,该解决方案将起作用。

如果您还有其他问题,请查看 MEMCACHED_BEHAVIOR_REMOVE_FAILED_SERVERS,它将在 x 次失败后自动从池中清除失败的服务器。

于 2011-07-16T18:58:42.570 回答
-1

我自己找到了答案。

https://bugs.launchpad.net/libmemcached/+bug/777672

应用补丁解决了我所有的问题。注意,我想知道它从 0.39 开始就坏了,没人关心。

于 2011-07-17T13:22:07.923 回答