使用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则不能这样