私のphpサイトでmemcacheに問題があります。時折私はサイトが誤動作しているという報告を得るでしょう、そして、私がmemcacheを見ると、私はいくつかの鍵がクラスタの両方のサーバに存在することを発見します。データは2つのエントリ間で同じではありません(1つは古いものです)。memcachedの重複キー
私がmemcachedを理解していれば、これは起こらないはずです。クライアントはキーをハッシュしてから、常に同じサーバーを選択する必要があります。だから私の理解が間違っているか、私のコードが間違っています。なぜこれが起こっているのかも説明できますか?
FWIWサーバーはAmazon EC2でホストされています。 memcacheのに
私のすべての接続は、この関数を使用して開かれます:
$mem_servers = array(
array('ec2-000-000-000-20.compute-1.amazonaws.com', 11211, 50),
array('ec2-000-000-000-21.compute-1.amazonaws.com', 11211, 50)
);
function ConnectMemcache()
{
global $mem_servers;
if ($memcon == 0) {
$memcon = new Memcache();
foreach($mem_servers as $server) $memcon->addServer($server[0], $server[1], true);
}
return($memcon);
}
と値は、このを通じて保存されています
function SetData($key,$data)
{
global $mem_global_key;
if(MEMCACHE_ON_OFF)
{
$key = $mem_global_key.$key;
$memcache = ConnectMemcache();
$memcache->set($key, $data);
return true;
}
else
{
return false;
}
}