跨多个服务器将 Zend Cache 与 AWS ElastiCache 结合使用的缓存值不一致
我们将 Zend Cache 与一个 memcached 后端一起使用,该后端指向具有 2 个缓存节点的 AWS ElastiCache 集群。我们的缓存设置如下所示:
$frontend = array(
'lifetime' => (60*60*48),
'automatic_serialization' => true,
'cache_id_prefix' => $prefix
);
$backend = array(
'servers' => array(
array( 'host' => $node1 ),
array( 'host' => $node2 )
)
);
$cache = Zend_Cache::factory('Output', 'memecached', $frontend, $backend);
过去,当使用单个 EC2 服务器写入和读取缓存时,我们没有注意到缓存存在任何问题。
但是,我们最近引入了第二台 EC2 服务器,突然间,当从一台服务器写入缓存并从另一台服务器读取时,我们看到了问题。两台服务器由同一个 AWS 账户管理,并且两台服务器在分别写入或读取缓存时都没有问题。两者使用相同的缓存配置。
服务器 A 执行$cache->save('hello', 'message');
从服务器 A 对 的后续调用将返回 hello 的预期结果。$cache->load('message');
但是,当服务器 B 执行 时,我们得到 false。$cache->load('message');
就我对ElastiCache的理解而言,发出读取请求的服务器应该与返回的缓存值无关。谁能对此有所了解?