php操作memcache缓存方法分享
使用memcache的前提是需要在服务端先配置好memcahche的环境!确认memcahce可以正常连接之后就可以在程序使用了!
<?php
/**
*Memcache缓存操作
*@authorhxm
*@version1.0
*@since2015.05.04
*/
classMCacheextendsObjectimplementsCacheFace
{
private$mem=null;//Mem对象
private$sId=1;//servier服务ID
/**
*初始化Memcache
*
*@returnObject
*/
publicfunction__construct()
{
if(!class_exists('Memcache'))
{
thrownewQException('PHPextensiondoesnotexist:Memcache');
}
$this->mem=newMemcache();
}
/**
*链接memcahce服务
*
*@accessprivate
*@paramstring$key关键字
*@paramstring$value缓存内容
*@returnarray
*/
privatefunctionconnect($sid)
{
$file=$this->CacheFile();
require$file;
if(!isset($cache))
{
thrownewQException('缓存配置文件不存在'.$file);
}
$server=$cache[$this->cacheId];
$sid=isset($sid)==0?$this->sId:$sid;//memcache服务选择
if(!$server[$sid])
{
thrownewQException('当前操作的缓存服务器配置文件不存在');
}
$host=$server[$sid]['host'];
$port=$server[$sid]['port'];
try{
$this->mem->connect($host,$port);
}catch(Exception$e){
exit('memecache连接失败,错误信息:'.$e->getMessage());
}
}
/**
*写入缓存
*
*@accessprivate
*@paramstring$key关键字
*@paramstring$value缓存内容
*@returnarray
*/
publicfunctionset($key,$value,$sid,$expire=0)
{
$data=$this->get($key,$sid);//如果已经存在key值
if($data)
{
return$this->mem->set($key,$value,MEMCACHE_COMPRESSED,$expire);
}else{
return$this->mem->add($key,$value,MEMCACHE_COMPRESSED,$expire);
}
}
/**
*读取缓存
*
*@accessprivate
*@paramstring$key关键字
*@paramint$sid选择第几台memcache服务器
*@returnarray
*/
publicfunctionget($key,$sid)
{
$this->connect($sid);
return$this->mem->get($key);
}
/**
*清洗(删除)已经存储的所有的元素
*
*@accessprivate
*@returnarray
*/
publicfunctionflush()
{
$this->connect();
return$this->mem->flush();
}
/**
*删除缓存
*
*@accessprivate
*@paramstring$key关键字
*@paramint$sid选择第几台memcache服务器
*@returnarray
*/
publicfunctionremove($key,$sid)
{
$this->connect();
return$this->mem->delete($key);
}
/**
*析构函数
*最后关闭memcache
*/
publicfunction__destruct()
{
/*if(!$this->mem)
{
$this->mem->close();
}*/
}
}
以上所述就是本文的全部内容了,希望大家能够喜欢。