PHP内存缓存Memcached类实例
本文实例讲述了PHP内存缓存Memcached类。分享给大家供大家参考。
具体实现方法如下:
<?PHP
classMemcacheModel{
private$mc=null;
/**
*构造方法,用于添加服务器并创建memcahced对象
*/
function__construct(){
$params=func_get_args();
$mc=newMemcache;
//如果有多个memcache服务器
if(count($params)>1){
foreach($paramsas$v){
call_user_func_array(array($mc,'addServer'),$v);
}
//如果只有一个memcache服务器
}else{
call_user_func_array(array($mc,'addServer'),$params[0]);
}
$this->mc=$mc;
}
/**
*获取memcached对象
*@returnobjectmemcached对象
*/
functiongetMem(){
return$this->mc;
}
/**
*检查mem是否连接成功
*@returnbool连接成功返回true,否则返回false
*/
functionmem_connect_error(){
$stats=$this->mc->getStats();
if(emptyempty($stats)){
returnfalse;
}else{
returntrue;
}
}
privatefunctionaddKey($tabName,$key){
$keys=$this->mc->get($tabName);
if(emptyempty($keys)){
$keys=array();
}
//如果key不存在,就添加一个
if(!in_array($key,$keys)){
$keys[]=$key; //将新的key添加到本表的keys中
$this->mc->set($tabName,$keys,MEMCACHE_COMPRESSED,0);
returntrue; //不存在返回true
}else{
returnfalse; //存在返回false
}
}
/**
*向memcache中添加数据
*@paramstring$tabName需要缓存数据表的表名
*@paramstring$sql使用sql作为memcache的key
*@parammixed$data需要缓存的数据
*/
functionaddCache($tabName,$sql,$data){
$key=md5($sql);
//如果不存在
if($this->addKey($tabName,$key)){
$this->mc->set($key,$data,MEMCACHE_COMPRESSED,0);
}
}
/**
*获取memcahce中保存的数据
*@paramstring$sql使用SQL的key
*@returnmixed返回缓存中的数据
*/
functiongetCache($sql){
$key=md5($sql);
return$this->mc->get($key);
}
/**
*删除和同一个表相关的所有缓存
*@paramstring$tabName数据表的表名
*/
functiondelCache($tabName){
$keys=$this->mc->get($tabName);
//删除同一个表的所有缓存
if(!emptyempty($keys)){
foreach($keysas$key){
$this->mc->delete($key,0);//0表示立刻删除
}
}
//删除表的所有sql的key
$this->mc->delete($tabName,0);
}
/**
*删除单独一个语句的缓存
*@paramstring$sql执行的SQL语句
*/
functiondelone($sql){
$key=md5($sql);
$this->mc->delete($key,0);//0表示立刻删除
}
}
?>
希望本文所述对大家的PHP程序设计有所帮助。