0

设置假设我有 2 个 memcached 服务器和 2 个 web 服务器来连接到这两个 memcached 服务器。我正在使用 spymemcached 客户端。

认为:

1) web1 向 memcached 插入一个键“abc”。基于某种机制,它存储在 memcached1 中。

2) 当 web2 尝试获取密钥“abc”时,它如何知道它将去 memcached1 获取密钥?

我是否需要在 spymemcached 客户端进行任何特殊设置以确保始终确定将存储密钥的 memcached 服务器?

4

2 回答 2

4

您不需要任何特殊的逻辑来执行此操作。Memcached 是一种分布式缓存,通过将密钥散列到不同的服务器来工作。只要您列出 memcached 集群中的所有服务器,您应该没有问题。

我还想指出,您可以更改的一个参数是客户端使用的散列算法。这可以在您用来构建连接的任何 ConnectionFactory 类中完成。

于 2012-06-19T16:51:07.040 回答
1

通常,相同的密钥永远不会存储在两个不同的 memcached 服务器上。这是因为 memcached 客户端会使用某种算法来找出密钥应该存储在哪个服务器上,并在使用给定 id 查找时再次识别同一台服务器。

使用的典型算法可能是

server_id = key.hashCode()%N,其中 N 是由 0 到 N-1 的数字标识的 memcached 服务器的数量

于 2013-07-10T10:47:29.273 回答