php实现的redis缓存类定义与使用方法示例
本文实例讲述了php实现的redis缓存类定义与使用方法。分享给大家供大家参考,具体如下:
php+redis缓存类
host="127.0.0.1";
$this->port="6379";
$redis=newRedis();
$redis->pconnect($this->host,$this->port);
$this->redis=$redis;
$this->cacheid=$this->getcacheid();
$this->lifetime=$lifetime;
$this->data=$redis->hMGet($this->cacheid,array('content','creattime'));
//print_r($this->redis);
//print_r($this->data);
}
/**
*检查缓存是否有效
*/
privatefunctionisvalid(){
$data=$this->data;
if(!$data['content'])returnfalse;
if(time()-$data['creattime']>$this->lifetime)returnfalse;
returntrue;
}
/**
*写入缓存
*$mode==0,以浏览器缓存的方式取得页面内容
*/
publicfunctionwrite($mode=0,$content=''){
switch($mode){
case0:
$content=ob_get_contents();
break;
default:
break;
}
ob_end_flush();
try{
$this->redis->hMset($this->cacheid,array('content'=>$content,'creattime'=>time()));
$this->redis->expireAt($this->cacheid,time()+$this->lifetime);
}
catch(Exception$e){
$this->error('写入缓存失败!');
}
}
/**
*加载缓存
*exit()载入缓存后终止原页面程序的执行,缓存无效则运行原页面程序生成缓存
*ob_start()开启浏览器缓存用于在页面结尾处取得页面内容
*/
publicfunctionload(){
if($this->isvalid()){
echo$this->data['content'];
exit();
}
else{
ob_start();
}
}
/**
*清除缓存
*/
publicfunctionclean(){
try{
$this->redis->hDel($this->cacheid,array('content','creattime'));
}
catch(Exception$e){
$this->error('清除缓存失败!');
}
}
/**
*取得缓存文件路径
*/
privatefunctiongetcacheid(){
return$this->dir.md5($this->geturl()).$this->ext;
}
/**
*取得当前页面完整url
*/
privatefunctiongeturl(){
$url='';
if(isset($_SERVER['REQUEST_URI'])){
$url=$_SERVER['REQUEST_URI'];
}
else{
$url=$_SERVER['Php_SELF'];
$url.=empty($_SERVER['QUERY_STRING'])?'':'?'.$_SERVER['QUERY_STRING'];
}
return$url;
}
/**
*输出错误信息
*/
privatefunctionerror($str){
echo''.$str.' 更多关于PHP相关内容感兴趣的读者可查看本站专题:《php+redis数据库程序设计技巧总结》、《php面向对象程序设计入门教程》、《PHP基本语法入门教程》、《PHP数组(Array)操作技巧大全》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》
希望本文所述对大家PHP程序设计有所帮助。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。