如何确保两个spymemcached客户端将相同的密钥存储到同一个服务器?

时间:2012-06-19 04:37:38

标签: caching memcached spymemcached

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

假设:

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

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

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

2 个答案:

答案 0 :(得分:3)

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

我还想注意,您可以更改的一个参数是客户端使用的哈希算法。这可以在用于构建连接的任何ConnectionFactory类中完成。

答案 1 :(得分:1)

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

使用的典型算法可能是

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