为什么memcached不跨节点同步

时间:2013-08-14 20:36:16

标签: memcached distributed-caching

在memcached概述here

它说:

Memcached servers are generally unaware of each other. There is no crosstalk, no syncronization, no broadcasting. The lack of interconnections means adding more servers will usually add more capacity as you expect. There might be exceptions to this rule, but they are exceptions and carefully regarded. 

我在想如何在没有跨群集中的节点同步的情况下成为分布式系统?如果我从我的程序写入节点1上的缓存并且我的下一个请求转到node2,那么我正在从过时的缓存中读取。

2 个答案:

答案 0 :(得分:3)

Memcache不提供与密钥分片,散列,复制,HA,冗余或故障转移相关的功能。

客户端库利用某种类型的散列算法在一组memcached服务器上分发密钥,但该功能完全独立于memcached本身。

根据您的目标语言,有很多客户端库,只需选择一个提供您需要的散列功能的客户端库,您就可以了: http://code.google.com/p/memcached/wiki/Clients

答案 1 :(得分:-1)

如果要求memcache写入密钥X的缓存,它会将流量发送到shard h(X),其中h将项目映射到它所在的节点。如果要从缓存中读取密钥X,类似地,流量也会转到shard h(X)。