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 相关文章推荐
PHP Memcached应用实现代码
Feb 08 PHP
php自动加载的两种实现方法
Jun 21 PHP
使用GROUP BY的时候如何统计记录条数 COUNT(*) DISTINCT
Apr 23 PHP
基于magic_quotes_gpc与magic_quotes_runtime的区别与使用介绍
Apr 22 PHP
基于Zend的Config机制的应用分析
May 02 PHP
Laravel框架学习笔记(二)项目实战之模型(Models)
Oct 15 PHP
php字符串函数学习之substr()
Mar 27 PHP
php正则去除网页中所有的html,js,css,注释的实现方法
Nov 03 PHP
php获取字符串前几位的实例(substr返回字符串的子串用法)
Mar 08 PHP
PHP文件系统管理(实例讲解)
Sep 19 PHP
PHP如何防止XSS攻击与XSS攻击原理的讲解
Mar 22 PHP
laravel excel 上传文件保存到本地服务器功能
Nov 14 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中变量及部分适用方法
2008/03/27 PHP
PHP异步调用socket实现代码
2012/01/12 PHP
浅谈PHP封装CURL
2019/03/06 PHP
thinkphp5+layui实现的分页样式示例
2019/10/08 PHP
代码精简的可以实现元素圆角的js函数
2007/07/21 Javascript
UserData用法总结 lanyu出品
2010/07/01 Javascript
javascript event 事件解析
2011/01/31 Javascript
JavaScript高级程序设计(第3版)学习笔记7 js函数(上)
2012/10/11 Javascript
javascript常见操作汇总
2014/09/03 Javascript
js实现3D图片逐张轮播幻灯片特效代码分享
2015/09/09 Javascript
jQuery实现的网页左侧在线客服效果代码
2015/10/23 Javascript
AngularJS表单和输入验证实例
2016/11/02 Javascript
微信小程序实战之自定义toast(6)
2017/04/18 Javascript
Angularjs过滤器实现动态搜索与排序功能示例
2017/12/13 Javascript
在Vue中使用echarts的方法
2018/02/05 Javascript
vue 开发一个按钮组件的示例代码
2018/03/27 Javascript
Vue实现双向绑定的原理以及响应式数据的方法
2018/07/02 Javascript
又拍云 Node.js 实现文件上传、删除功能
2018/10/28 Javascript
vue-router实现编程式导航的代码实例
2019/01/19 Javascript
vue实现一个矩形标记区域(rectangle marker)的方法
2020/10/28 Javascript
Python正则表达式介绍
2012/08/06 Python
Python的Tornado框架实现异步非阻塞访问数据库的示例
2016/06/30 Python
python2.7的编码问题与解决方法
2016/10/04 Python
python Matplotlib画图之调整字体大小的示例
2017/11/20 Python
Python3实现的简单工资管理系统示例
2019/03/12 Python
使用python打印十行杨辉三角过程详解
2019/07/10 Python
Python中私有属性的定义方式
2020/03/05 Python
HTML5中的音频和视频媒体播放元素小结
2016/01/29 HTML / CSS
耐克美国官网:Nike.com
2016/08/01 全球购物
MySQL面试题
2014/01/12 面试题
国贸类专业毕业生的求职信分享
2013/12/08 职场文书
个人欠款担保书
2014/05/20 职场文书
医药公司开票员岗位职责
2015/04/15 职场文书
企业安全隐患排查治理制度
2015/08/05 职场文书
个人房屋租赁合同(标准范本)
2019/09/16 职场文书
Python-OpenCV教程之图像的位运算详解
2021/06/21 Python