成人精品一区二区三区中文字幕-成人精品一区二区三区-成人精品一级毛片-成人精品亚洲-日本在线视频一区二区-日本在线视频免费

導(dǎo)航首頁(yè) ? 技術(shù)教程 ? php實(shí)現(xiàn)的redis緩存類定義與使用方法示例
全站頭部文字 我要出現(xiàn)在這里
php實(shí)現(xiàn)的redis緩存類定義與使用方法示例 968 2023-12-08   

本文實(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í)行,緩存無效則運(yùn)行原頁(yè)面程序生成緩存
  * ob_start() 開啟瀏覽器緩存用于在頁(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è)面代碼開始
// //頁(yè)面代碼結(jié)束
// $cache->write(); //首次運(yùn)行或緩存過期,生成緩存
?>

更多關(guān)于PHP相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《php+redis數(shù)據(jù)庫(kù)程序設(shè)計(jì)技巧總結(jié)》、《php面向?qū)ο蟪绦蛟O(shè)計(jì)入門教程》、《PHP基本語法入門教程》、《PHP數(shù)組(Array)操作技巧大全》、《php字符串(string)用法總結(jié)》、《php+mysql數(shù)據(jù)庫(kù)操作入門教程》及《php常見數(shù)據(jù)庫(kù)操作技巧匯總》

希望本文所述對(duì)大家PHP程序設(shè)計(jì)有所幫助。


主站蜘蛛池模板: 浙江卫视电视台节目表| 超级方程式| 追凶电影| 四年级竖式1000道题免费打印| jeanette| 吉泽明步番号| 郑丽身高一米几| 中国式离婚演员表| 髋关节置换术后护理ppt | 欺辱尤娜| 钢琴键盘示意图| 阿修罗城之瞳| 电影《salawahan》| 南来北往电视剧演员表| bustybuffy| 老江湖 电影| 尸家重地演员表| 斯科特阿金斯主演所有电影| 456电影网络重口味456| 日本电影姐姐| 87版七仙女台湾| 间宫夕贵电影| 九号所有车型图片| 武朝迷案| 驿路梨花思维导图| 郑艳丽三级| 林青霞离婚| 电影青春期| 路易·德·菲奈斯| 春心荡漾第二季无删减| 正在直播乒乓赛事| 仓皇一夜| 宋小宝电影| 女孩们在线观看| 妻子的秘密按摩电影| 汽水音乐app官网| cctv17节目表今天| 高潮艺术| 朋友的女友| 枕边凶灵完整版免费播放| 美女撒尿全过程免费|

!!!站長(zhǎng)長(zhǎng)期在線接!!!

網(wǎng)站、小程序:定制開發(fā)/二次開發(fā)/仿制開發(fā)等

各種疑難雜癥解決/定制接口/定制采集等

站長(zhǎng)微信:lxwl520520

站長(zhǎng)QQ:1737366103