使用PHP的memcache和memcached两者都有addServer。
所以我添加了2个不同的memcache服务器,这些服务器运行在不同的硬件甚至不同的端口上。 当我“设置”,“添加”或“增加” - 将使用memcache选择哪一个以及使用memcached选择哪一个?如果其中一台服务器不可用,然后再次可用,会发生什么?
如何在两者上启用redunandancy / replication of data?
假设我希望将数据存储到服务器A和服务器B,当一个数据不可用时,然后再次可用时,它会回到其他服务器上的什么状态。
我认为这可以通过memcache集群完成,但PHP的客户端库memcache和memcached是如何处理的?
答案 0 :(得分:2)
为了达到预期效果,您需要完成一些工作。我建议使用Membase,打开复制并关闭持久性以达到相同的效果。但首先让我解释一下:
在Memcached和Memcache客户端中,密钥的散列确定哪个内存缓存服务器存储数据。那么哪个服务器存储数据实际上取决于密钥。
Memcached允许该选项具有一致的散列(Memcached :: DISTRIBUTION_CONSISTENT或Memcached :: OPT_LIBKETAMA_COMPATIBLE),这样如果memache服务器出现故障或添加了服务器,则不会对所有数据进行重新洗牌。
不推荐但...... 为了达到预期的效果(效率低下),请使用一致的散列和:
1.)检查服务器是否已关闭。创建一个仅包含相关服务器的Memcache(d)对象,并使用它存储和检索随机数据。如果它有效,它就会起作用。
2。)创建Memcached对象时,将您的工作服务器添加到服务器列表中。
3。)享受!
PS:随着服务器的上下变化,您的缓存未命中率也将会下降。