memcache的集群、高可用

error    http://www.tuicool.com/articles/fE3ABf
搭建Magent代理服务器:  
在 192.168.1.2、192.168.1.3 上分别 编译安装 magent [CSDN下载 Magent]  
#编译安装magent:  
cd /usr/local/  
mkdir ./magent  
cd ./magent 
tar xzvf ./magent-0.5.tar.gz  
/sbin/ldconfig  
sed -i "s#LIBS = -levent#LIBS = -levent -lm#g" Makefile  
make  
cp ./magent /usr/bin/magent


./magent -u root -n 51200 -l 192.168.1.197 -p 12000 -s 192.168.1.193:11211 -s 192.168.1.193:11212 -b 192.168.1.197:11211

测试缓存数据的分布情况:
以前,我们用PHP连接多台Memcached服务器,做分布式缓存时,参考代码如下:
$memcache = new Memcache; 
$memcache->addServer('localhost', 11211);
$memcache->addServer('localhost', 11212);
$memcache->addServer('localhost', 11213);
for ($i = 0; $i < 1000; $i++)
{
    $memcache->set($i, $i, 0, 1000);
}
利用magent代理服务器来验证
$mem = new \Memcache();
$host = '192.168.1.128';
$port = '12000';
$mem->connect($host, $port);
$key1 = 'snsgou1';
$value1 = '12';
$mem->set($key1, $value1);
$key2 = 'snsgou2';
$value2 = '22';
$mem->set($key2, $value2);
$key3 = 'snsgou3';
$value3 = '32';
$mem->set($key3, $value3);
$key4 = 'snsgou4';
$value4 = '42';
$mem->set($key4, $value4);

echo $mem->get("snsgou1");
echo $mem->get("snsgou2");
echo $mem->get("snsgou3");
echo $mem->get("snsgou4");

说明:
1、PHP连接magent,把缓存key1交给magent,magent根据自身的配置参数,再加上一定的哈希算法,会计算出key1存在3台主Memcached服务器的某一台上,然后以同样的算法,将key1也在2台备用的Memcached服务器中的某一台上,再存一份数据。即,主服务器是分布式存储的,同时,从服务器也是分布式存储的;
2、在PHP获取缓存数据key1时,magent一旦得知数据所存的那台主Memcached服务器挂掉了,它就会转向从备用的Memcached服务器中获取数据。注意:服务器的定位选择算法跟存的时候是一样的。
3、有个缺陷,当 down 掉的那台主Memcached服务器重新恢复正常后,Memcahed里是没有数据的,即数据全部丢失,但此时 备用的Memcached服务器 又不会将数据同步到 主服务器。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值