我在我的php网站上遇到了一些memcache的问题。偶尔我会收到报告说网站表现不佳,当我查看memcache时,我发现集群中的几个键存在于两个服务器上。这两个条目之间的数据不同(其中一个更旧)。
我对memcached的理解是不应该出现这种情况...客户端应该对键进行哈希处理,然后始终选择相同的服务器。所以要么我的理解是错误的,要么我的代码有问题。有人能解释一下为什么会出现这种情况吗?
顺便说一句,这些服务器托管在Amazon EC2上。
我所有连接到memcache的连接都通过这个函数打开:
我对memcached的理解是不应该出现这种情况...客户端应该对键进行哈希处理,然后始终选择相同的服务器。所以要么我的理解是错误的,要么我的代码有问题。有人能解释一下为什么会出现这种情况吗?
顺便说一句,这些服务器托管在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;
}
}