封装Memcache类需有以下3点:
1.扩展性 2.可调式 3.尽量简便的操作,一个方法多种可能 接下来,上代码:
index.php
<?php
//实现下面这三个功能
//set $m->s($key,$value,$time)
//get $m->s($key)
//delete $m->s($key,NULL)
include 'memcached.class.php';
$m = new Mem();
$server = array(
array('127.0.0.1',11211),
);
$m->addServer($server);
$m->s('test','testvalue',0);
echo $m->s('test');
echo '<br />';
$m->s('test',NULL);
echo $m->s('test');
?>
//类文件
memcached.class.php
<?php
class Mem
{
private $type = 'Memcached';
private $m;
private $time = 0;
private $error;
private $debug = 'true';
public function __construct()
{
if(!class_exists($this->type)){
$this->error = 'No ' . $this->type;
return false;
} else {
$this->m = new $this->type;
}
}
public function addServer($arr)
{
$this->m->addServers($arr);
}
public function s($key,$value=' ',$time = NULL)
{
$number = func_num_args();
if($number == 1)
{
//get
return $this->get($key);
}else if($number >= 2){
if($value === NULL){
//delete
$this->delete($key);
}else{
//set
$this->set($key,$value,$time);
}
}
}
//set
private function set($key,$value,$time=NULL)
{
if($time === NULL){
$time = $this->time;
}
$this->m->set($key,$value,$time);
if($this->debug){
if($this->m->getResultCode() != 0){
return false;
}
}
}
//get
private function get($key)
{
$return = $this->m->get($key);
if($this->debug){
if($this->m->getResultCode() != 0){
return false;
}else{
return $return;
}
}else{
return $return;
}
}
//delete
private function delete($key)
{
$this->m->delete($key);
}
public function getError()
{
if($this->error){
return $this->error;
}else{
return $this->m->getResultMessage();
}
}
}
在项目中使用Memcache
1.即时生成缓存(用于新闻,详情页) 2.提前生成缓存(数据量比较大,访问量也大时,当访问量小时,可以从内存中剔除掉,重新生成) 3.永久缓存(用于单独一个页面)
最后注意事项:
1.不要在单机模式中使用Memcached 2.不要只使用Memcache保存重要数据 3.定期查看缓存的分布状况和击中情况