我们正在使用Zend Cache,其后端为指向具有2个缓存节点的AWS ElastiCache集群的memcached。我们的缓存设置如下:
$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账户管理,都没有问题,可以单独地从缓存中写入或读取数据。它们使用相同的缓存配置。
Server A 执行 $cache->save('hello', 'message');
随后从 Server A 调用 $cache->load('message');
会返回预期的结果hello。然而,当 Server B 执行
$cache->load('message');
时,我们得到了false。就我对ElastiCache的理解而言,发出读取请求的服务器不应影响返回的缓存值。有人能对此进行解释吗?