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下打开URL地址的几种方法小结
May 16 PHP
深入理解PHP之数组(遍历顺序)  Laruence原创
Jun 13 PHP
php从memcache读取数据再批量写入mysql的方法
Dec 29 PHP
php+mysqli实现批量执行插入、更新及删除数据的方法
Jan 29 PHP
php实现插入数组但不影响原有顺序的方法
Mar 27 PHP
54个提高PHP程序运行效率的方法
Jul 19 PHP
php使用正则验证中文
Apr 06 PHP
微信支付开发订单查询实例
Jul 12 PHP
thinkPHP多域名情况下使用memcache方式共享session数据的实现方法
Jul 21 PHP
PHP文件操作实例总结
Sep 27 PHP
PHP实现redis限制单ip、单用户的访问次数功能示例
Jun 16 PHP
Smarty模板语法详解
Jul 20 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中用date函数获取当前时间有误的解决办法
2013/08/02 PHP
解决Codeigniter不能上传rar和zip压缩包问题
2014/03/07 PHP
PHP里8个鲜为人知的安全函数分析
2014/12/09 PHP
JavaScript Tips 使用DocumentFragment加快DOM渲染速度
2010/06/28 Javascript
三种检测iPhone/iPad设备方向的方法
2014/04/23 Javascript
jQuery图片特效插件Revealing实现拉伸放大
2015/04/22 Javascript
jQuery EasyUI Panel面板组件使用详解
2017/02/28 Javascript
完美实现js焦点轮播效果(二)(图片可滚动)
2017/03/07 Javascript
JavaScript中双符号的运算详解
2017/03/12 Javascript
JS实现自动轮播图效果(自适应屏幕宽度+手机触屏滑动)
2017/06/19 Javascript
vue项目使用axios发送请求让ajax请求头部携带cookie的方法
2018/09/26 Javascript
微信小程序实现身份证取景框拍摄
2020/09/09 Javascript
vant时间控件使用方法详解
2020/12/24 Javascript
python实现字符串和日期相互转换的方法
2015/05/13 Python
Python的Flask框架及Nginx实现静态文件访问限制功能
2016/06/27 Python
Python基于动态规划算法解决01背包问题实例
2017/12/06 Python
python实现kNN算法
2017/12/20 Python
基于循环神经网络(RNN)实现影评情感分类
2018/03/26 Python
对python模块中多个类的用法详解
2019/01/10 Python
python3实现指定目录下文件sha256及文件大小统计
2019/02/25 Python
python使用threading.Condition交替打印两个字符
2019/05/07 Python
python Matplotlib底图中鼠标滑过显示隐藏内容的实例代码
2019/07/31 Python
Python用K-means聚类算法进行客户分群的实现
2020/08/23 Python
Jupyter Notebook安装及使用方法解析
2020/11/12 Python
python 检测nginx服务邮件报警的脚本
2020/12/31 Python
查找适用于matplotlib的中文字体名称与实际文件名对应关系的方法
2021/01/05 Python
肯尼亚网上商城:Kilimall
2016/08/20 全球购物
意大利香水和彩妆护肤品购物网站:Ditano
2017/08/13 全球购物
世界上获奖最多的手机镜头:Olloclip
2018/03/03 全球购物
诉讼财产保全担保书
2014/05/20 职场文书
国际经济与贸易专业求职信
2014/07/10 职场文书
投标授权委托书范文
2014/08/02 职场文书
借款协议书
2014/09/16 职场文书
工作检讨书大全
2015/01/26 职场文书
利用javaScript处理常用事件详解
2021/04/14 Javascript
Mysql 如何合理地统计一个数据库里的所有表的数据量
2022/04/18 MySQL