zoukankan      html  css  js  c++  java
  • 使用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则不能这样

  • 相关阅读:
    python paramiko模块学习分享
    中国大数据市场规模分析及预测
    中国大数据市场规模分析及预测
    显著性水平 置信度 置信区间 实例讲解
    显著性水平 置信度 置信区间 实例讲解
    加密算法
    Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Duplicate entry 'qingmu' for key 'PRIMARY'
    spring Security的自定义用户认证
    spring的面试题
    solr和ElasticSearch(ES)的区别?
  • 原文地址:https://www.cnblogs.com/-beyond/p/7813361.html
Copyright © 2011-2022 走看看