刚接触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<br>';

}

2、添加数值

if($m->set('key2',100,MEMCACHE_COMPRESSED,60)){

echo '添加数值ok<br>';

}

 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<br>';

}
3.1添加序列化
if($m->set('keyar',serialize($arry),MEMCACHE_COMPRESSED,60)){

print_r($arr);

echo '添加数组ok<br>';

}

echo $m->get('keyar').'<br>'; // 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<br>';

}

echo $m->get('keyjs').'<br>'; // {"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<br>';

}

 

4、添加布尔值

if($m->set('key5',false,MEMCACHE_COMPRESSED,60)){

echo '添加布尔值ok<br>';

}

 

5、添加资源类型 暂时不能使用存储资源型数据

$con = mysql_connect("127.0.0.1","root","root");

if($m->set('key6',$con,MEMCACHE_COMPRESSED,60)){

 echo '添加资源ok<br>';

}

$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 <br>';

}else{

echo 'replace no <br>';

}

echo $m->get('key1').'<br>';

 

四、数据的删除 delete()

if($m->delete('key1')){

echo 'key1 delete ok';

}else{

echo 'key1 不存在';

}

echo $m->get('key1').'<br>';

 

拓展二:

在刚学习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。

相关评论(0)
您是不是忘了说点什么?

友情提示:垃圾评论一律封号...

还没有评论,快来抢沙发吧!