我在我的php網站上遇到memcache的問題。偶爾我會得到一個報告,說該網站行爲不當,當我看着memcache時,發現集羣中兩臺服務器上都存在幾個密鑰。兩個條目之間的數據不一樣(其中一個較舊)。memcached中的重複鍵
我對memcached的理解是,這不應該發生......客戶端應該散列密鑰,然後總是選擇相同的服務器。所以無論我的理解是錯誤的還是我的代碼是。任何人都可以解釋爲什麼這可能會發生?
FWIW服務器託管在Amazon EC2上。
我所有的內存緩存來連接都是通過這個函數打開:
$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;
}
}