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 相关文章推荐
重新封装zend_soap实现http连接安全认证的php代码
Jan 12 PHP
php设计模式 Mediator (中介者模式)
Jun 26 PHP
php 判断字符串中是否包含html标签
Feb 17 PHP
Laravel 5框架学习之Eloquent 关系
Apr 09 PHP
php封装好的人民币数值转中文大写类
Dec 20 PHP
php强大的时间转换函数strtotime
Feb 18 PHP
Yii实现简单分页的方法
Apr 29 PHP
php 类中的常量、静态属性、非静态属性的区别
Apr 09 PHP
PHP中快速生成随机密码的几种方式
Apr 17 PHP
php实现微信支付之现金红包
May 30 PHP
PHP设计模式之装饰器模式定义与用法简单示例
Aug 13 PHP
浅谈PHP SHA1withRSA加密生成签名及验签
Mar 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
JAVA/JSP学习系列之七
2006/10/09 PHP
PHP面向对象——访问修饰符介绍
2012/11/08 PHP
php实现的数组转xml案例分析
2019/09/28 PHP
基于jquery的拖动布局插件
2011/11/25 Javascript
一行代码实现纯数据json对象的深度克隆实现思路
2013/01/09 Javascript
jQuery 借助插件Lavalamp实现导航条动态美化效果
2013/09/27 Javascript
用jQuery与JSONP轻松解决跨域访问的问题
2014/02/04 Javascript
基于jQuery实现最基本的淡入淡出效果实例
2015/02/02 Javascript
JS操作XML实例总结(加载与解析XML文件、字符串)
2015/12/08 Javascript
jQuery实现漂亮实用的商品图片tips提示框效果(无图片箭头+阴影)
2016/04/16 Javascript
javascript数组遍历的方法实例分析
2016/09/13 Javascript
vue.js绑定class和style样式(6)
2016/12/09 Javascript
js移动端图片压缩上传功能
2020/08/18 Javascript
vue单页应用加百度统计代码(亲测有效)
2018/01/31 Javascript
element UI upload组件上传附件格式限制方法
2018/09/04 Javascript
python使用urllib2实现发送带cookie的请求
2015/04/28 Python
Python命令启动Web服务器实例详解
2017/02/23 Python
python实现随机森林random forest的原理及方法
2017/12/21 Python
python3实现带多张图片、附件的邮件发送
2019/08/10 Python
python中删除某个元素的方法解析
2019/11/05 Python
PyTorch实现ResNet50、ResNet101和ResNet152示例
2020/01/14 Python
tensorflow 报错unitialized value的解决方法
2020/02/06 Python
Django 解决阿里云部署同步数据库报错的问题
2020/05/14 Python
python golang中grpc 使用示例代码详解
2020/06/03 Python
HTML5手机端弹出遮罩菜单特效代码
2016/01/27 HTML / CSS
韩国三星旗下的一家超市连锁店:Home Plus
2016/07/30 全球购物
华润集团网上药店:健一网
2016/09/19 全球购物
学期自我鉴定范文
2013/10/01 职场文书
建筑班组长岗位职责
2014/01/02 职场文书
学校十一活动方案
2014/02/01 职场文书
金融管理专业毕业生求职信
2014/03/12 职场文书
幼儿园小班评语大全
2014/04/17 职场文书
大学生社会实践方案
2014/05/11 职场文书
爱心捐书活动总结
2014/07/05 职场文书
政工例会汇报材料
2014/08/26 职场文书
向国旗敬礼学生寄语大全
2014/09/30 职场文书