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