刚接触memcache,感觉用起来还是挺方便的,于是就整理记录一下简单的增删改查(CURD)操作。直接上代码:
创建memcache对象
$m = new Memcache;
// 第一种链接方式
if(!$m->connect("127.0.0.1",11211)){
die('链接失败');
}
// 第二种链接方式
if(!$m->connect("127.0.0.1:11211")){
die('链接失败');
}
一、如何添加到memcache中。
1、添加字符串
if($m->set('key1','beijing',MEMCACHE_COMPRESSED,60)){
echo '添加字符串ok
';
}
2、添加数值
if($m->set('key2',100,MEMCACHE_COMPRESSED,60)){
echo '添加数值ok
';
}
3、添加数组
在添加数组时,如果根据需要,也可以序列化serialize <=> unserialize。拓展知识序列化。
如果根据需要,也可以json_encode <=> json_decode。
$arry = ['a'=>'a','b'=>'b'];
if($m->set('key3',$arry,MEMCACHE_COMPRESSED,60)){
print_r($arr);
echo '添加数组ok
';
}
3.1添加序列化
if($m->set('keyar',serialize($arry),MEMCACHE_COMPRESSED,60)){
print_r($arr);
echo '添加数组ok
';
}
echo $m->get('keyar').'
'; // a:2:{s:1:"a";s:1:"a";s:1:"b";s:1:"b";}
3.2添加json
if($m->set('keyjs',json_encode($arry),MEMCACHE_COMPRESSED,60)){
echo '添加数组ok
';
}
echo $m->get('keyjs').'
'; // {"a":"a","b":"b"}
3.3、添加对象
class Dog{
public $name;
public $age;
public function __construct($name,$age)
{
$this->name=$name;
$this->age= $age;
}
}
$dog = new Dog('小明',50);
if($m->set('key4',$dog,MEMCACHE_COMPRESSED,60)){
echo '添加对象ok
';
}
4、添加布尔值
if($m->set('key5',false,MEMCACHE_COMPRESSED,60)){
echo '添加布尔值ok
';
}
5、添加资源类型 暂时不能使用存储资源型数据
$con = mysql_connect("127.0.0.1","root","root");
if($m->set('key6',$con,MEMCACHE_COMPRESSED,60)){
echo '添加资源ok
';
}
$res = $m->get('key6');
var_dump($res);
二、如何获取或查询出memcache中设置的值。
1、获取字符串、数值、数组、布尔值
$str = $m->get('key1');
$num = $m->get('key2');
$arr = $m->get('key3');
$boo = $m->get('key5');
2、获取对象
$dog = $m->get('key4');
$name = $dog->name;
拓展一:
数组:$arry = ['a'=>'a','b'=>'b'];
1、序列化与反序列化
序列化是将数据保存为一串字符,包括数据的类型和数据的信息。
偏于数据的保存和传输。
例如:
a:2:{s:1:"a";s:1:"a";s:1:"b";s:1:"b";}
2、json_encode与json_decode
偏于对数据更好的处理。
例如:
{"a":"a","b":"b"}
三、数据的修改 replace()
if($m->replace('key1','hello',MEMCACHE_COMPRESSED,60)){
echo 'replace ok
';
}else{
echo 'replace no
';
}
echo $m->get('key1').'
';
四、数据的删除 delete()
if($m->delete('key1')){
echo 'key1 delete ok';
}else{
echo 'key1 不存在';
}
echo $m->get('key1').'
';
拓展二:
在刚学习memcache的时候,对于memcache的参数设置上面有些可能还是有点模糊,那么下面我们详细的剖析一个set的方法进行解析。
说明:
bool Memcache::set ( string $key , mixed $var [, int $flag[, int $expire ]] )
参数:
key 缓存数据的键, 其长度不能超过250个字符
var 值,整型将直接存储,其他类型将被序列化存储,其值最大为1M
flag 是否使用 zlib 压缩,当flag=MEMCACHE_COMPRESSED的时侯,数据很小的时候不会采用zlib压缩,只有数据达到一定大小才对数据进行zlib压缩。(没有具体的测试数据进行压缩的最小值是多少)
expire 过期时间,0 为永不过期,可使用 unix 时间戳格式或距离当前时间的秒数,设为秒数时不能大于 2592000(30 天)
注意:
1、如果把expire设置为0,表示永不过期(只要memcache不重启就一直在)。
2、如果把expire给的是秒数,则最大的为30天。30*3600*24。
3、如果希望保存的天数大于30天,那么就用 time()+31*3600*24。
返回值:
成功返回 TRUE,失败返回 FALSE。