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
搭建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
/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服务器 又不会将数据同步到 主服务器。