封装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.定期查看缓存的分布状况和击中情况