跨多个服务器使用Zend Cache和AWS ElastiCache的缓存值不一致

mic*_*xor 30 php caching zend-framework amazon-web-services amazon-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);
Run Code Online (Sandbox Code Playgroud)

当使用单个EC2服务器从缓存中写入和读取时,我们没有注意到过去缓存有任何问题.

但是,我们最近推出了第二个EC2服务器,突然间我们从一个服务器写入缓存并从另一个服务器读取时遇到问题.两个服务器都由同一AWS账户管理,并且两个服务器都没有分别写入缓存或从缓存读取的问题.两者都使用相同的缓存配置.

服务器A执行$cache->save('hello', 'message');

$cache->load('message');服务器A的后续调用返回hello的预期结果.

但是,当服务器B执行时$cache->load('message');,我们会得到错误.

就我对ElastiCache的理解而言,发出读取请求的服务器应该对返回的缓存值没有影响.任何人都可以对此有所了解吗?

Jas*_*son 1

您能告诉我您使用的 memcache 的 hash_strategy 是什么吗?我过去使用默认标准时遇到过问题,但自从更改为一致以来一切都很好:

http://php.net/manual/en/memcache.ini.php#ini.memcache.hash-strategy