配置memcache集群步骤
安装
sudo apt-get install -y php5-memcache
记得重启apache
开启服务
memcached -p 11211 start
memcached -p 11311 start
php操作memcache缓存实例
<?php
header("Content-type:text/html;charset=utf-8");
$arr = array(
array("host" => "127.0.0.1", "port" => 11211, "weight" => 40),
array("host" => "127.0.0.1", "port" => 11311, "weight" => 60),
);
$mem = new Memcache;
foreach ($arr as $ele) {
$mem->addServer($ele["host"], $ele["port"], true, $ele["weight"]);
}
// 将数据set进memcache
for ($i = 0; $i < 10; $i++) {
// 由于使用了分布式(addServer),所以这里不需要使用connect或者pconnect打开链接
// set方法会调用memcache的分布式缓存分配算法
// 按照权重将缓存项缓存到连接池的某个服务器
if ($mem->set($i, $i, 0, 3600)) {
echo "缓存成功:key:$i,value:$i";
} else {
echo "缓存失败";
}
echo "<br/>";
}
// 将数据从memcache中get出来
for ($i = 0; $i < 10; $i++) {
$val = $mem->get($i);
if (false === $val) {
echo "缓存获取失败";
} else {
echo "缓存获取成功:key:$val,value:$val";
}
echo "<br/>";
}
执行结果
缓存成功:key:0,value:0
缓存成功:key:1,value:1
缓存成功:key:2,value:2
缓存成功:key:3,value:3
缓存成功:key:4,value:4
缓存成功:key:5,value:5
缓存成功:key:6,value:6
缓存成功:key:7,value:7
缓存成功:key:8,value:8
缓存成功:key:9,value:9
缓存获取成功:key:0,value:0
缓存获取成功:key:1,value:1
缓存获取成功:key:2,value:2
缓存获取成功:key:3,value:3
缓存获取成功:key:4,value:4
缓存获取成功:key:5,value:5
缓存获取成功:key:6,value:6
缓存获取成功:key:7,value:7
缓存获取成功:key:8,value:8
缓存获取成功:key:9,value:9
总结
-
保存的时候,
set
方法会将数据根据weight
权重保存到某一个memcached服务器 -
取出数据时,
get
方法会根据相同的路由规则,去相应的服务器上取出数据 -
当某一个memcache服务down掉的时候,存放到此服务器中的数据会丢失,这时候需要重新从数据源获取。