PHP:memcache和memcached - addServer问题

时间:2011-03-31 23:24:41

标签: php memcached distributed cluster-computing

使用PHP的memcachememcached两者都有addServer。

所以我添加了2个不同的memcache服务器,这些服务器运行在不同的硬件甚至不同的端口上。 当我“设置”,“添加”或“增加” - 将使用memcache选择哪一个以及使用memcached选择哪一个?如果其中一台服务器不可用,然后再次可用,会发生什么?

如何在两者上启用redunandancy / replication of data?

假设我希望将数据存储到服务器A和服务器B,当一个数据不可用时,然后再次可用时,它会回到其他服务器上的什么状态。

我认为这可以通过memcache集群完成,但PHP的客户端库memcache和memcached是如何处理的?

1 个答案:

答案 0 :(得分:2)

为了达到预期效果,您需要完成一些工作。我建议使用Membase,打开复制并关闭持久性以达到相同的效果。但首先让我解释一下:

在Memcached和Memcache客户端中,密钥的散列确定哪个内存缓存服务器存储数据。那么哪个服务器存储数据实际上取决于密钥。

Memcached允许该选项具有一致的散列(Memcached :: DISTRIBUTION_CONSISTENT或Memcached :: OPT_LIBKETAMA_COMPATIBLE),这样如果memache服务器出现故障或添加了服务器,则不会对所有数据进行重新洗牌。

不推荐但...... 为了达到预期的效果(效率低下),请使用一致的散列和:

1.)检查服务器是否已关闭。创建一个仅包含相关服务器的Memcache(d)对象,并使用它存储和检索随机数据。如果它有效,它就会起作用。

2。)创建Memcached对象时,将您的工作服务器添加到服务器列表中。

3。)享受!

PS:随着服务器的上下变化,您的缓存未命中率也将会下降。