2 つのキャッシュ ノードを持つ AWS ElastiCache クラスターを指す memcached バックエンドで Zend Cache を使用しています。キャッシュのセットアップは次のようになります。
$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 サーバーを使用してキャッシュの書き込みと読み取りを行った場合、キャッシュに関する問題に気付いたことはありません。
しかし、最近 2 台目の EC2 サーバーを導入したところ、突然、あるサーバーからキャッシュに書き込み、別のサーバーから読み取るときに問題が発生するようになりました。両方のサーバーは同じ AWS アカウントによって管理されており、どちらのサーバーも個別にキャッシュへの書き込みまたはキャッシュからの読み取りに問題はありません。両方に同じキャッシュ構成が使用されます。
サーバー Aが実行する$cache->save('hello', 'message');
サーバー A$cache->load('message');
からの後続の呼び出しは、期待されるhelloの結果を返します。
ただし、サーバー Bが実行される$cache->load('message');
と、falseが返されます。
ElastiCache に関する私の理解では、読み取りリクエストを行うサーバーは、返されるキャッシュ値に影響を与えるべきではありません。誰でもこれに光を当てることができますか?