使用php操作memcache

memcache的使用。函数库参见http://php.net/manual/zh/book.memcache.php 

memcached的函数库参见http://php.net/manual/zh/book.memcached.php


使用的方法如下面的代码:

<?php 
	$memcache=new memcache();
	
	$memcache->connect("127.0.0.1","11211");
	$memcache->addServer("127.0.0.1","11212");
	$memcache->addServer("127.0.0.1","11213");
	//建议直接用addServer

	$flag=$memcache->flush();//标记所有项都失效
	//此时缓存池中的数据还存在,并没有被删除,只是已经过期,不能再访问了(惰性删除)
	var_dump($flag);//bool(true)
	echo "<br>";

	//添加一项name
	$flag=$memcache->add("name","beyond",false,600);
	var_dump($flag);
	echo $memcache->get("name")."<br>";
	//bool(true) beyond

	//添加一项age
	$flag=$memcache->add("age","20",false,600);
	var_dump($flag);
	echo $memcache->get("age")."<br>";
	// bool(true) 20
	
	//尝试再次添加一项name,会失败
	$flag=$memcache->add("name","hello",false,600);
	var_dump($flag);
	echo $memcache->get("name")."<br>";
	// bool(false) beyond
	
	//尝试获取一个不存在的项
	var_dump($memcache->get("abc"));
	//false

	//尝试替换掉已存在name,name已存在,成功执行
	$flag=$memcache->replace("name","hello",false,600);
	var_dump($flag);
	echo $memcache->get("name")."<br>";
	// bool(true) hello

	//尝试替换掉不存在的sex,失败
	$flag=$memcache->replace("sex","male",false,600);
	var_dump($flag);
	echo $memcache->get("male")."<br>";
	// bool(false) 

	//尝试用set对已存在的name重新设定值,成功
	$flag=$memcache->set("name","hello",false,600);
	var_dump($flag);
	echo $memcache->get("name")."<br>";
	// bool(true) hello
	
	//尝试用set对已存在的sex重新设定值,成功
	$flag=$memcache->set("sex","male",false,600);
	var_dump($flag);
	echo $memcache->get("name")."<br>";
	// bool(true) hello
	
	$memcache->delete("name");
	echo $memcache->get("name")."<br>";
	//false
 ?>

  可以使用connect()连接一个memcache服务器,但是建议直接使用addServer()。

  add($key,$value,$flag,$expire=0)向memcache中添加一项,第三个参数表示是否对数据进行压缩,第四个参数是该项的有效时间,单位为秒

  get($key)获得对应键的值,返回其内容,若没有该项或已经失效,则返回false.

  set和replace 与add的参数相同,前者表示强制设置,后者是替换已存在的项;

  他们的区别在于

  add 仅当存储空间中不存在键相同的数据时才保存
  replace 仅当存储空间中存在键相同的数据时才保存
  set 与add和replace不同,无论何时都保存

  flush是让服务器中的缓存数据全都过期,此时,数据依旧存在,但是不可以再被访问,这是memcache的内部机制(惰性删除)。

 

<?php 
	$memcache=new memcache();
	
	$memcache->connect("127.0.0.1","11211");
	$memcache->addServer("127.0.0.1","11212");
	$memcache->addServer("127.0.0.1","11213");
	
	$memcache->flush();

	//添加一项
	$memcache->add("num",1,false,600);
	echo $memcache->get("num");//1

	//自增1
	$memcache->increment("num");
	echo $memcache->get("num");//2

	//自增3
	$memcache->increment("num",3);
	echo $memcache->get("num");//5

	//自减3
	$memcache->decrement("num",3);
	echo $memcache->get("num");//2

	//自减3
	$memcache->decrement("num",3);
	echo $memcache->get("num");//0

	$memcache->close();
 ?>

  increment($key,$step=1)让$key所对应的值自增$step(默认自增1)

  decrement($key,$step=1)让$key所对应的值自减$step(默认自减1),但是自减之后的值不会小于0。 

  注意memcache或者memcached 和redis不同。redis中可以用incr命令不同,它的incr可以创建一个新的项,如果该项存在,则自增1,而如果该项不存在,则默认创建一项初始默认值为0,然后自增为1,;   memcache的incr则不能这样

posted @ 2018-08-09 16:15  寻觅beyond  阅读(271)  评论(0编辑  收藏  举报
返回顶部