php操作redis缓存方法分享


Posted in PHP onJune 03, 2015

php redis缓存操作

<?php
/**
 * Redis缓存操作
 * @author hxm
 * @version 1.0
 * @since 2015.05.04
 */
class RCache extends Object implements CacheFace 
{
  private $redis = null; //redis对象
   
  private $sId  = 1;  //servier服务ID
   
  private $con  = null;//链接资源
   
  /**
   * 初始化Redis
   *
   * @return Object
   */
  public function __construct()
  {
    if ( !class_exists('Redis') )
    {
      throw new QException('PHP extension does not exist: Redis');
    }
    $this->redis = new Redis();
  }
   
  /**
   * 链接memcahce服务
   *
   * @access private
   * @param  string $key 关键字
   * @param  string $value 缓存内容
   * @return array
   */
  private function connect( $sid )
  {
    $file = $this->CacheFile();
    require $file;
    if(! isset($cache) )
    {
      throw new QException('缓存配置文件不存在'.$file);
    }
    $server = $cache[$this->cacheId];
    $sid  = isset($sid) == 0 ? $this->sId : $sid;//memcache服务选择
    if ( ! $server[$sid])
    {
      throw new QException('当前操作的缓存服务器配置文件不存在');
    }
    $host = $server[$sid]['host'];
    $port = $server[$sid]['port'];
    try {
      $this->redis->connect( $host , $port );
    } catch (Exception $e) {
      exit('memecache连接失败,错误信息:'. $e->getMessage());
    }
  }
   
  /**
   * 写入缓存
   *
   * @access private
   * @param  string $key 关键字
   * @param  string $value 缓存内容
   * @return array
   */
  public function set( $key , $value , $sid , $expire = 0)
  {
    $data = $this->get($key , $sid); //如果已经存在key值
    if( $data ) 
    {
      return $this->redis->getset( $key , $value);
    } else {
      return $this->redis->set( $key , $value);
    }
  }
   
  /**
   * 读取缓存
   *
   * @access private
   * @param  string $key 关键字
   * @param  int   $sid 选择第几台memcache服务器
   * @return array
   */
  public function get( $key , $sid)
  {
    $this->connect( $sid );
    return $this->redis->get($key);
  }
   
  /**
   * 清洗(删除)已经存储的所有的元素
   *
   * @access private
   * @return array
   */
  public function flush()
  {
    $this->connect();
    return $this->redis->flushall();
  }
  /**
   * 删除缓存
   *
   * @access private
   * @param  string $key 关键字
   * @param  int   $sid 选择第几台memcache服务器
   * @return array
   */
  public function remove( $key , $sid)
  {
    $this->connect();
    return $this->redis->del($key);
  }
   
  /**
   * 析构函数
   * 最后关闭memcache
   */
  public function __destruct()
  {
    if($this->redis)
    {
      $this->redis->close();
    }
  }
}

以上所述就是本文的全部内容了,希望大家能够喜欢。

PHP 相关文章推荐
风格模板初级不完全修改教程
Oct 09 PHP
php pcntl_fork和pcntl_fork 的用法
Apr 13 PHP
ThinkPHP3.1新特性之G方法的使用
Jun 19 PHP
php中socket的用法详解
Oct 24 PHP
PHP中使用循环实现的金字塔图形
Nov 08 PHP
php字符串替换函数substr_replace()用法实例
Mar 17 PHP
浅谈PHP安全防护之Web攻击
Jan 03 PHP
CakePHP框架Session设置方法分析
Feb 23 PHP
php简单检测404页面的方法示例
Aug 23 PHP
Laravel框架中集成MongoDB和使用详解
Oct 17 PHP
PHP使用openssl扩展实现加解密方法示例
Feb 20 PHP
一文搞懂php的垃圾回收机制
Jun 18 PHP
php集成套件服务器xampp安装使用教程(适合第一次玩PHP的新手)
Jun 03 #PHP
php使用GD实现颜色渐变实例
Jun 02 #PHP
PHP准确取得服务器IP地址的方法
Jun 02 #PHP
PHP中isset与array_key_exists的区别实例分析
Jun 02 #PHP
php使用ob_flush不能每隔一秒输出原理分析
Jun 02 #PHP
php获取指定范围内最接近数的方法
Jun 02 #PHP
PHP使用递归方式列出当前目录下所有文件的方法
Jun 02 #PHP
You might like
php中文本数据翻页(留言本翻页)
2006/10/09 PHP
PHP file_get_contents函数读取远程数据超时的解决方法
2015/05/13 PHP
PHP采用超长(超大)数字运算防止数字以科学计数法显示的方法
2016/04/01 PHP
PHP输出XML格式数据的方法总结
2017/02/08 PHP
JavaScript设置FieldSet展开与收缩
2009/05/15 Javascript
jquery keypress,keyup,onpropertychange键盘事件
2010/06/25 Javascript
ie下动态加态js文件的方法
2011/09/13 Javascript
JS中toFixed()方法引起的问题如何解决
2012/11/20 Javascript
js获取GridView中行数据的两种方法 分享
2013/07/13 Javascript
基于Flowplayer打造一款免费的WEB视频播放器附源码
2015/09/06 Javascript
js插件Jcrop自定义截取图片功能
2016/10/14 Javascript
vue.js整合mint-ui里的轮播图实例代码
2017/12/27 Javascript
node基于puppeteer模拟登录抓取页面的实现
2018/05/09 Javascript
vue获取元素宽、高、距离左边距离,右,上距离等还有XY坐标轴的方法
2018/09/05 Javascript
axios取消请求的实践记录分享
2018/09/26 Javascript
vue实现自定义日期组件功能的实例代码
2018/11/06 Javascript
js实现文章目录索引导航(table of content)
2020/05/10 Javascript
python fabric使用笔记
2015/05/09 Python
python实现爬虫下载美女图片
2015/07/14 Python
Python中装饰器高级用法详解
2017/12/25 Python
Python docx库用法示例分析
2019/02/16 Python
pyqt弹出新对话框,以及关闭对话框获取数据的实例
2019/06/18 Python
tensorflow之自定义神经网络层实例
2020/02/07 Python
150行Python代码实现带界面的数独游戏
2020/04/04 Python
sqlalchemy实现时间列自动更新教程
2020/09/02 Python
python爬虫调度器用法及实例代码
2020/11/30 Python
美国最大的城市服装和运动鞋零售商:Jimmy Jazz
2016/11/19 全球购物
3.12植树节活动总结2014
2014/03/13 职场文书
2014年大学生就业规划书
2014/04/04 职场文书
北京奥运会主题口号
2014/06/13 职场文书
2015年销售部工作总结范文
2015/04/27 职场文书
表扬信范文
2019/04/22 职场文书
MySQL入门命令之函数-单行函数-流程控制函数
2021/04/05 MySQL
Oracle11g r2 卸载干净重装的详细教程(亲测有效已重装过)
2021/06/04 Oracle
Js类的构建与继承案例详解
2021/09/15 Javascript
【TED出品】天梯非主流开心游1700 划水骑士
2022/03/31 魔兽争霸