php實(shí)現(xiàn)的redis緩存類定義與使用方法示例
本文實(shí)例講述了php實(shí)現(xiàn)的redis緩存類定義與使用方法。分享給大家供大家參考,具體如下:
php+redis緩存類
<?php
class redisCache {
/**
* $host : redis服務(wù)器ip
* $port : redis服務(wù)器端口
* $lifetime : 緩存文件有效期,單位為秒
* $cacheid : 緩存文件路徑,包含文件名
*/
private $host;
private $port;
private $lifetime;
private $cacheid;
private $data;
public $redis;
/**
* 析構(gòu)函數(shù),檢查緩存目錄是否有效,默認(rèn)賦值
*/
function __construct($lifetime=1800) {
//配置
$this->host = "127.0.0.1";
$this->port = "6379";
$redis = new Redis();
$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);
}
/**
* 檢查緩存是否有效
*/
private function isvalid(){
$data=$this->data;
if (!$data['content']) return false;
if (time() - $data['creattime'] > $this->lifetime) return false;
return true;
}
/**
* 寫入緩存
* $mode == 0 , 以瀏覽器緩存的方式取得頁(yè)面內(nèi)容
*/
public function write($mode=0,$content='') {
switch ($mode) {
case 0:
$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() 載入緩存后終止原頁(yè)面程序的執(zhí)行,緩存無(wú)效則運(yùn)行原頁(yè)面程序生成緩存
* ob_start() 開(kāi)啟瀏覽器緩存用于在頁(yè)面結(jié)尾處取得頁(yè)面內(nèi)容
*/
public function load() {
if ($this->isvalid()) {
echo $this->data['content'];
exit();
}
else {
ob_start();
}
}
/**
* 清除緩存
*/
public function clean() {
try {
$this->redis->hDel($this->cacheid, array('content','creattime'));
}
catch (Exception $e) {
$this->error('清除緩存失敗!');
}
}
/**
* 取得緩存文件路徑
*/
private function getcacheid() {
return $this->dir.md5($this->geturl()).$this->ext;
}
/**
* 取得當(dāng)前頁(yè)面完整url
*/
private function geturl() {
$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;
}
/**
* 輸出錯(cuò)誤信息
*/
private function error($str) {
echo '<div style="color:red;">'.$str.'</div>';
}
}
//用法:
// require_once('redisCache.php');
// $cache = new redisCache(10); //設(shè)置緩存生存期
// if ($_GET['clearCache']) $cache->clean();
// else $cache->load(); //裝載緩存,緩存有效則不執(zhí)行以下頁(yè)面代碼
// //頁(yè)面代碼開(kāi)始
// //頁(yè)面代碼結(jié)束
// $cache->write(); //首次運(yùn)行或緩存過(guò)期,生成緩存
?>
更多關(guān)于PHP相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《php+redis數(shù)據(jù)庫(kù)程序設(shè)計(jì)技巧總結(jié)》、《php面向?qū)ο蟪绦蛟O(shè)計(jì)入門教程》、《PHP基本語(yǔ)法入門教程》、《PHP數(shù)組(Array)操作技巧大全》、《php字符串(string)用法總結(jié)》、《php+mysql數(shù)據(jù)庫(kù)操作入門教程》及《php常見(jiàn)數(shù)據(jù)庫(kù)操作技巧匯總》
希望本文所述對(duì)大家PHP程序設(shè)計(jì)有所幫助。
- php Redis函數(shù)用法實(shí)例總結(jié)【附php連接redis單例類】
- PHP實(shí)現(xiàn)的Redis多庫(kù)選擇功能單例類
- php操作redis中的hash和zset類型數(shù)據(jù)的方法和代碼例子
- PHP實(shí)現(xiàn)操作redis的封裝類完整實(shí)例
- php 使用redis鎖限制并發(fā)訪問(wèn)類示例
- PHP實(shí)現(xiàn)的Redis操作通用類示例
- PHP操作redis實(shí)現(xiàn)的分頁(yè)列表,新增,刪除功能封裝類與用法示例
- PHP基于redis計(jì)數(shù)器類定義與用法示例
- PHP購(gòu)物車類Cart.class.php定義與用法示例
- php實(shí)現(xiàn)仿寫CodeIgniter的購(gòu)物車類
- PHP+redis實(shí)現(xiàn)的購(gòu)物車單例類示例
相關(guān)文章
PHP實(shí)現(xiàn)的各類hash算法長(zhǎng)度及性能測(cè)試實(shí)例
這篇文章主要介紹了PHP實(shí)現(xiàn)的各類hash算法長(zhǎng)度及性能測(cè)試,結(jié)合具體實(shí)例形式分析了php hash計(jì)算的相關(guān)操作技巧,需要的朋友可以參考下2017-08-08
解決安裝WampServer時(shí)提示缺少msvcr110.dll文件的問(wèn)題
下面小編就為大家?guī)?lái)一篇解決安裝WampServer時(shí)提示缺少msvcr110.dll文件的問(wèn)題。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-07-07
php 實(shí)現(xiàn)進(jìn)制相互轉(zhuǎn)換
最近的項(xiàng)目中需要用到進(jìn)制轉(zhuǎn)換,這個(gè)問(wèn)題在剛剛接觸計(jì)算機(jī)理論時(shí)候,還是很會(huì)的,好久不用,居然模糊了……2016-04-04
PHP 加密 Password Hashing API基礎(chǔ)知識(shí)點(diǎn)
在本篇文章里小編給大家分享的是一篇關(guān)于PHP 加密 Password Hashing API基礎(chǔ)知識(shí)點(diǎn),有興趣的朋友們可以學(xué)習(xí)下。2020-03-03
php 數(shù)組字符串搜索array_search技巧
本文給大家總結(jié)了一下PHP實(shí)現(xiàn)數(shù)組字符串搜索的幾種使用技巧,非常的簡(jiǎn)單實(shí)用,有需要的小伙伴可以參考下2016-07-07
PHP合并數(shù)組+號(hào)和array_merge的區(qū)別
這篇文章主要介紹了PHP合并數(shù)組+號(hào)和array_merge的區(qū)別,PHP的數(shù)組融合一般有兩種做法,一種是直接使用加號(hào)相加,另一種則是使用array_merge函數(shù)進(jìn)行相加,兩者之間有點(diǎn)區(qū)別,需要的朋友可以參考下2015-06-06
php判斷類是否存在函數(shù)class_exists用法分析
這篇文章主要介紹了php判斷類是否存在函數(shù)class_exists用法,實(shí)例分析了PHP針對(duì)類是否存在進(jìn)行判斷的應(yīng)用,對(duì)于自動(dòng)加載類以及類實(shí)例化之前的存在判斷來(lái)說(shuō)都非常具有實(shí)用價(jià)值,需要的朋友可以參考下2014-11-11
php+mysql+jquery實(shí)現(xiàn)日歷簽到功能
本文主要介紹了php+mysql+jquery實(shí)現(xiàn)日歷簽到功能的過(guò)程與步驟,具有很好的參考價(jià)值,下面跟著小編一起來(lái)看下吧2017-02-02

