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执行zip与rar解压缩方法实现代码
Dec 05 PHP
PHP异步调用socket实现代码
Jan 12 PHP
基于php socket(fsockopen)的应用实例分析
Jun 02 PHP
解析PHP中的正则表达式以及模式匹配
Jun 19 PHP
php echo, print, print_r, sprintf, var_dump, var_expor的使用区别
Jun 20 PHP
解析php中如何调用用户自定义函数
Aug 06 PHP
PHP比较运算符的详细介绍
Sep 29 PHP
PHP curl模拟登录带验证码的网站
Nov 30 PHP
PHP流Streams、包装器wrapper概念与用法实例详解
Nov 17 PHP
java解析json方法总结
May 16 PHP
php实现通过stomp协议连接ActiveMQ操作示例
Feb 23 PHP
Yii框架小部件(Widgets)用法实例详解
May 15 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
基于文本的留言簿
2006/10/09 PHP
用PHP实现的随机广告显示代码
2007/06/14 PHP
php使HTML标签自动补全闭合函数代码
2012/10/04 PHP
用php实现选择排序的解决方法
2013/05/04 PHP
php中filter函数验证、过滤用户输入的数据
2014/01/13 PHP
微信公众平台天气预报功能开发
2014/07/06 PHP
如何修改yii2.0自带的user表为其它的表
2017/08/01 PHP
javascipt基础内容--需要注意的细节
2013/04/10 Javascript
JavaScript中模拟实现jsonp
2015/06/19 Javascript
JS模拟按钮点击功能的方法
2015/12/22 Javascript
node.js微信公众平台开发教程
2016/03/04 Javascript
深入理解JQuery循环绑定事件
2016/06/02 Javascript
jQuery下拉框的简单应用
2016/06/24 Javascript
微信小程序中使元素占满整个屏幕高度实现方法
2016/12/14 Javascript
JavaScript实现短暂提示框功能
2018/04/04 Javascript
微信小程序数据分析之自定义分析的实现
2018/08/17 Javascript
JQuery特殊效果和链式调用操作示例
2019/05/13 jQuery
微信小程序用户授权弹窗 拒绝时引导用户重新授权实现
2019/07/29 Javascript
vue项目里面引用svg文件并给svg里面的元素赋值
2020/08/17 Javascript
Python中在脚本中引用其他文件函数的实现方法
2016/06/23 Python
python安装模块如何通过setup.py安装(超简单)
2018/05/05 Python
浅谈python中真正关闭socket的方法
2018/12/18 Python
OpenCV-Python 摄像头实时检测人脸代码实例
2019/04/30 Python
解决python文件双击运行秒退的问题
2019/06/24 Python
浅谈Python小波分析库Pywavelets的一点使用心得
2019/07/09 Python
pytorch自定义二值化网络层方式
2020/01/07 Python
python实现在一个画布上画多个子图
2020/01/19 Python
Python类及获取对象属性方法解析
2020/06/15 Python
CSS3选择器新增问题的实现
2021/01/21 HTML / CSS
美国棒球装备和用品商店:Baseball Savings
2018/06/09 全球购物
大学生自我鉴定
2013/12/08 职场文书
面临毕业的毕业生自荐书范文
2014/02/05 职场文书
危货运输企业安全生产责任书
2014/07/28 职场文书
中英文求职信范文
2015/03/19 职场文书
民政局2016年“六一”儿童节慰问活动总结
2016/04/06 职场文书
SQL Server中的游标介绍
2022/05/20 SQL Server