memcached+php+mysql缓存实践

日期:2015年8月30日      标签:php

php是提供memcached的插件的,他的名字加memcache,至于怎样将memcache插件添加进来本章不细讲,无非是将php_memcache.dll文件放到ext目录下,然后修改php.ini文件就行了,本栏目下的第一篇文章有类似的配置过程,可以参考。
假设现在环境都搭好了,要做的就是写程序实现了,再次之前我们要了解最基本的几个东西,一是连接memcached,代码如下:

$memcache = new Memcache;
$memcache->connect(“localhost”,11211);

连接到了memcached之后呢?还有最基本几个函数要用到:分别是$memcache->get()和$memcache->add()以及$memcache->delete()等函数,具体的这些函数的参数以及参数的意义可以看链接:http://php.net/manual/zh/book.memcache.php get是从内存中获取缓存的信息,add是将信息加入到缓存中,delete是将制定的信息删除。 下面我写了一个例子:模仿的是一个新闻页面,根据标题从数据库里查询文章的正文。想这种如果配置了memcached就很简单了。只要访问一次数据库,将查询结果存储到内存中,之后就直接使用memcached访问内存就行了,减轻了数据的压力。

下面是php代码:

<?php  
include('config.php');  
mysql_query("SET NAMES 'utf8'");  
mysql_query("SET CHARACTER_SET_CLIENT=utf8");  
mysql_query("SET CHARACTER_SET_RESULTS=utf8");  
//仅仅在测试情况下写以下两行代码,为了便于理解memcached的作用
$sql="UPDATE test SET require_times=require_times+1";
mysql_query($sql);  
$memcache = new Memcache;
$memcache->connect("localhost",11211);
$query="select content from test where title='在线教育屡战屡败出路何在'";
$key=md5($query);//将查询语句用MD5加密作为Key值
//$memcache->delete($key,0);
echo "在线教育屡战屡败出路何在";  
if($memcache->get($key)){  
$content=unserialize($memcache->get($key));
 echo $content['content'];
//仅仅在测试情况下写以下三行代码,为了便于理解memcached的作用
$re=mysql_query("select times,require_times from test where title='在线教育屡战屡败出路何在'");
$row=mysql_fetch_assoc($re);
echo "当前页面访问次数:".$row['require_times'].";数据库访问次数:".$row['times'];  
}
else{  
$res=mysql_query($query);
 $row=mysql_fetch_assoc($res); echo $row['content'];
//让字段数加1
$sql="UPDATE test SET times=times+1";
 mysql_query($sql);
$memcache->add($key,serialize($row),0,600);
 }
?>

其中config.php是数据库配置文件,上面有一个记录访问次数的功能,正常情况下是没有的,但是为了直观的表示这多写了这写代码。看一下运行结果:

The Ghost Logo

访问次数刷新就会加1,数据库访问次数只有在执行了查询才会加1.

下面是本例的demo:demo

(正文完)



© 喻小右 2016 京ICP备15064386号-1