Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP:memcache和memcached-addServer问题_Php_Memcached_Distributed_Cluster Computing - Fatal编程技术网

PHP:memcache和memcached-addServer问题

PHP:memcache和memcached-addServer问题,php,memcached,distributed,cluster-computing,Php,Memcached,Distributed,Cluster Computing,使用PHP,两者都有addServer 因此,我添加了两个不同的memcache服务器,它们运行在不同的硬件上,甚至运行在不同的端口上。 当我“设置”、“添加”或“增量”时——使用memcache选择哪一个,使用memcached选择哪一个?如果其中一台服务器变得不可用,然后又变为可用,会发生什么情况 如何在这两个服务器上启用数据的重新同步/复制 假设我希望数据同时存储到服务器A和服务器B,当其中一个不可用时,它会返回到另一个服务器上的内容 我认为这可以通过memcache集群来实现,但是PHP

使用PHP,两者都有addServer

因此,我添加了两个不同的memcache服务器,它们运行在不同的硬件上,甚至运行在不同的端口上。 当我“设置”、“添加”或“增量”时——使用memcache选择哪一个,使用memcached选择哪一个?如果其中一台服务器变得不可用,然后又变为可用,会发生什么情况

如何在这两个服务器上启用数据的重新同步/复制

假设我希望数据同时存储到服务器A和服务器B,当其中一个不可用时,它会返回到另一个服务器上的内容


我认为这可以通过memcache集群来实现,但是PHP的客户端libs memcache和memcached是如何处理的呢?

为了获得想要的效果,您必须做一些工作。我建议改为使用Membase,打开复制并关闭持久性,以达到相同的效果。但首先让我解释一下:

在Memcached和Memcache客户端中,密钥的散列决定了哪个Memcache服务器存储数据。因此,存储数据的服务器实际上取决于密钥

Memcached允许选项具有一致的哈希(Memcached::DISTRIBUTION_consistent或Memcached::OPT_LIBKETAMA_COMPATIBLE),这样,如果memcache服务器关闭或添加了服务器,并非所有数据都会被重新洗牌

不推荐,但。。。 要达到预期效果(效率低下),请使用一致的哈希和:

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

2.)创建Memcached对象时,使用工作服务器并将其添加到服务器列表中

3)享受吧

PS:随着服务器的升降,您的缓存未命中率也会随之上升。

同时也会降低