目录
Memcached主从复制+Keepalived实现Memcached高可用架构集群实施--缓存Mysql查询结果
前言
关于Memcached缓存服务和Memcached主从复制+Keepalived实现Memcached高可用架构集群实施--session共享均在之前已经实现,详细请看本人博文:
Memcached主从复制+Keepalived实现Memcached高可用架构集群实施之缓存session节点
系统环境
和Memcached主从复制+Keepalived实现Memcached高可用架构集群实施之session一样,所以在此不在浪费篇幅,如有需要请移步
部署服务
Memcached服务端
netstat -tunlp | grep memcache
tcp 0 0 0.0.0.0:11211 0.0.0.0:* LISTEN 34059/memcached
tcp 0 0 :::11211 :::* LISTEN 34059/memcached
Mysql服务端
mysql -uroot -p
Enter password:
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| test |
| wiki |
+--------------------+
5 rows in set (0.16 sec)
mysql> grant select on wiki.* to root@'%' identified by '1';
Web服务端
在站点目录下
cat test_memtest.php
<?php
$memcachehost = '172.168.1.150'; //memcache的IP地址
$memcacheport = 11211;
$memcachelife = 60; //缓存生命周期为60秒
$memcache = new Memcache;
$memcache->connect($memcachehost,$memcacheport) or die ("Could not connect");
$query="select * from personal_info limit 10";
$key=md5($query);
if(!$memcache->get($key))
{
$conn=mysql_connect("172.168.1.53","root","1");
//这里注意IP是memcache服务IP,root是mysql用户名,123456是密码
mysql_select_db(mydb);
$result=mysql_query($query);
while ($row=mysql_fetch_assoc($result))
{
$arr[]=$row;
}
$f = 'mysql';
$memcache->add($key,serialize($arr),0,30);
$data = $arr ;
}
else{
$f = 'memcache';
$data_mem=$memcache->get($key);
$data = unserialize($data_mem);
}
echo $f;
echo "<br>";
//print_r($data);
foreach($data as $a)
?> //OK web服务器就算安装完毕
实验验证
在任意浏览器
按F5刷新一下页面
上图显示数据是从Memcached中获取的
一分钟后按F5刷新一下页面
这说明实验结果符合Web脚本设定
至此Memcached部分结束