一、下载安装PHP的MemCache缓存,并启动
这个在上一节已经介绍了,这里不在详述
二、连接memcache服务器
<?php
$memca=new Memcache;//实例化一个memcache对象
$memca->connect('127.0.0.1',11211);//使用ip地址,和端口号的方式连接
$memca->close();//使用完毕记得释放资源
?>
记得一定要开启memcache服务哦,不然会报错
三、使用memcache添加数据(包括添加和修改)
<?php
//实例化一个memcache对象,并连接
$memca=new Memcache;
if(!$memca->connect('127.0.0.1',11211)) exit('连接失败');
$memca->add('v1','this is test',null,0);//添加一条名为v1值为字符串的数据,存储时间为永久
$arr=array('aaa','bbbb','ccc');
$memca->add('v2',$arr,null,24*60*60);//添加一个数组,同理,对象也可以添加,存储时间为一天
$memca->set('v3',123);//如果数据不存在就添加,存在则修改,这里成功添加
$memca->set('v1','this is test2');//这里修改v1
$memca->close();
?>
四、使用memcache读取数据
<?php
$memca=new Memcache;//实例化一个memcache对象
if(!$memca->connect('127.0.0.1',11211)) exit('连接失败');//ip地址,和端口号的方式连接
/*分别获取v1 v2 v3*/
echo '输出字符串V1的值:'.$memca->get('v1');echo "<br>";
echo '输出数组v2的值:';
var_dump($memca->get('v2'));echo "<br>";
echo '输出v3的值:';
var_dump($memca->get('v3'));echo "<br>";
echo '一次性获取v1 v2 v3 以关联数组的形式返回';
var_dump($memca->get(array('v1','v2','v3')));echo "<br>";
$memca->close();
?>
五、使用memcache删除数据
<?php
$memca=new Memcache;
if(!$memca->connect('127.0.0.1',11211)) exit('连接失败');
$memca->delete('v1',0);//立即删除v1,0是默认选项,这里可以不加
$memca->delete('v2',30);//30秒内删除,但是测试的时候也是立刻删除,我也不知道为啥
$memca->close();
//如果像删除所有数据可以使用
//$memca->flush();//该方法并不是真的删除所有数据,只是是所有变量过期,内存中的内容改写
?>
六、一个PHP使用memcache缓存的完整例子
首先程序判断是否有memcache缓存,如有有直接输出,不用数据库查询,如果没有,则查询数据库,并且缓存下来,第二次访问的时候,直接内存访问。这样一来,只要之前查询过这个id,那么记录将会直接从内存中获取,就不用连接数据库进行一系列操作了。
<?php
$id=$_GET['id'];
$memca=new Memcache;
$memca->connect('127.0.0.1',11211);
if($row=$memca->get($id))//判断memcahce中是否存在该id的值,如果存在则直接从内存中返回
{
var_dump($row);
}
else
{
//从数据库中获取标题
$conn=mysql_connect('localhost','root','root') or die("数据库连接失败".mysql_error());//链接MYsql服务器
mysql_select_db('xa1288_com'); mysql_query("set names utf8");
$sql1 = "select * from wl_news where id=".$id;
$result = mysql_query($sql1);
if($result && mysql_num_rows($result)>0){
while($res=mysql_fetch_assoc($result)){
$arr[]=$res;
}
}
$title=$arr[0]['title'];//获取标题
if($title!='')
{
$memca->add($id,$title);//将id为键,查询的结果为值存入memcache中
var_dump($title);echo "第一次查询";
}
else{
echo "没有记录";
}
}
$memca->close();
?>