php實(shí)現(xiàn)的redis緩存類(lèi)定義與使用方法示例
本文實(shí)例講述了php實(shí)現(xiàn)的redis緩存類(lèi)定義與使用方法。分享給大家供大家參考,具體如下:
php+redis緩存類(lèi)
<?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; } /** * 寫(xiě)入緩存 * $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('寫(xiě)入緩存失敗!'); } } /** * 加載緩存 * 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)容感興趣的讀者可查看本站專(zhuān)題:《php+redis數(shù)據(jù)庫(kù)程序設(shè)計(jì)技巧總結(jié)》、《php面向?qū)ο蟪绦蛟O(shè)計(jì)入門(mén)教程》、《PHP基本語(yǔ)法入門(mén)教程》、《PHP數(shù)組(Array)操作技巧大全》、《php字符串(string)用法總結(jié)》、《php+mysql數(shù)據(jù)庫(kù)操作入門(mén)教程》及《php常見(jiàn)數(shù)據(jù)庫(kù)操作技巧匯總》
希望本文所述對(duì)大家PHP程序設(shè)計(jì)有所幫助。
- php Redis函數(shù)用法實(shí)例總結(jié)【附php連接redis單例類(lèi)】
- PHP實(shí)現(xiàn)的Redis多庫(kù)選擇功能單例類(lèi)
- php操作redis中的hash和zset類(lèi)型數(shù)據(jù)的方法和代碼例子
- PHP實(shí)現(xiàn)操作redis的封裝類(lèi)完整實(shí)例
- php 使用redis鎖限制并發(fā)訪問(wèn)類(lèi)示例
- PHP實(shí)現(xiàn)的Redis操作通用類(lèi)示例
- PHP操作redis實(shí)現(xiàn)的分頁(yè)列表,新增,刪除功能封裝類(lèi)與用法示例
- PHP基于redis計(jì)數(shù)器類(lèi)定義與用法示例
- PHP購(gòu)物車(chē)類(lèi)Cart.class.php定義與用法示例
- php實(shí)現(xiàn)仿寫(xiě)CodeIgniter的購(gòu)物車(chē)類(lèi)
- PHP+redis實(shí)現(xiàn)的購(gòu)物車(chē)單例類(lèi)示例
相關(guān)文章
PHP實(shí)現(xiàn)的各類(lèi)hash算法長(zhǎng)度及性能測(cè)試實(shí)例
這篇文章主要介紹了PHP實(shí)現(xiàn)的各類(lèi)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-07php 實(shí)現(xiàn)進(jìn)制相互轉(zhuǎn)換
最近的項(xiàng)目中需要用到進(jìn)制轉(zhuǎn)換,這個(gè)問(wèn)題在剛剛接觸計(jì)算機(jī)理論時(shí)候,還是很會(huì)的,好久不用,居然模糊了……2016-04-04PHP 加密 Password Hashing API基礎(chǔ)知識(shí)點(diǎn)
在本篇文章里小編給大家分享的是一篇關(guān)于PHP 加密 Password Hashing API基礎(chǔ)知識(shí)點(diǎn),有興趣的朋友們可以學(xué)習(xí)下。2020-03-03php 數(shù)組字符串搜索array_search技巧
本文給大家總結(jié)了一下PHP實(shí)現(xiàn)數(shù)組字符串搜索的幾種使用技巧,非常的簡(jiǎn)單實(shí)用,有需要的小伙伴可以參考下2016-07-07PHP合并數(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-06php判斷類(lèi)是否存在函數(shù)class_exists用法分析
這篇文章主要介紹了php判斷類(lèi)是否存在函數(shù)class_exists用法,實(shí)例分析了PHP針對(duì)類(lèi)是否存在進(jìn)行判斷的應(yīng)用,對(duì)于自動(dòng)加載類(lèi)以及類(lèi)實(shí)例化之前的存在判斷來(lái)說(shuō)都非常具有實(shí)用價(jià)值,需要的朋友可以參考下2014-11-11php+mysql+jquery實(shí)現(xiàn)日歷簽到功能
本文主要介紹了php+mysql+jquery實(shí)現(xiàn)日歷簽到功能的過(guò)程與步驟,具有很好的參考價(jià)值,下面跟著小編一起來(lái)看下吧2017-02-02