PHP memcache客户端-它是否依赖于路由的服务器IP地址?

PHP memcache客户端-它是否依赖于路由的服务器IP地址?,php,amazon-web-services,memcached,Php,Amazon Web Services,Memcached,我正在AWS上从单个memcache服务器迁移到多个memcache服务器。 我需要从内部网络和外部访问memcache服务器。所以我用 // get data from memcache for counter $memcache = new Memcache; $memcache->addServer('server1_internal_IP', 11211); $memcache->addServer('server2_internal_IP', 11211); 从另一个区域

我正在AWS上从单个memcache服务器迁移到多个memcache服务器。 我需要从内部网络和外部访问memcache服务器。所以我用

// get data from memcache for counter
$memcache = new Memcache;
$memcache->addServer('server1_internal_IP', 11211);
$memcache->addServer('server2_internal_IP', 11211);
从另一个区域上的应用服务器,我正在使用以下方式访问相同的服务器:

$memcache->addServer('server1_external_IP', 11211);
$memcache->addServer('server2_external_IP', 11211);
当本地服务器写入memcache,而远程服务器读取时,路由似乎不会转到相同的服务器


可能是因为我使用不同的IP地址(亚马逊内部和外部)访问服务器吗?那么,在进行路由时,路由机制会考虑实际的IP地址吗?我认为这应该是一个简单的CRC32,在密钥上发现当memcache.hash_strategy=consistent时,哈希算法中使用了IP地址,因此无法路由到具有不同地址的相同服务器(每个服务器的AWS内部和外部IP地址都是如此)

解决方案是切换到标准哈希。在php.ini中添加以下内容:

[内存缓存]
memcache.hash_strategy=standard这并不理想。如果可能,您应该根据存储内容将数据隔离到单独的memcache服务器中

如果您使用内置的哈希算法将数据分布在服务器上,您无法保证负载均匀分布,添加/删除服务器将在所有服务器上重置整个缓存,这将在您的站点上造成重大问题(如果您使用它存储会话,每个人都会注销/释放购物车内容)