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程序设计有所帮助。