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函数解决SQL injection
Oct 09 PHP
不用数据库的多用户文件自由上传投票系统(3)
Oct 09 PHP
php 深入理解strtotime函数的使用详解
May 23 PHP
php如何解决无法上传大于8M的文件问题
Mar 10 PHP
PHP return语句的另一个作用
Jul 30 PHP
PHP针对常规模板引擎中与CSS/JSON冲突的解决方法
Aug 19 PHP
yii中widget的用法
Dec 03 PHP
基于thinkPHP实现的微信自定义分享功能示例
Sep 23 PHP
php实现与python进行socket通信的方法示例
Aug 30 PHP
laravel5使用freetds连接sql server的方法
Dec 07 PHP
PHP切割整数工具类似微信红包金额分配的思路详解
Sep 18 PHP
tp5框架使用cookie加密算法实现登录功能示例
Feb 10 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
在普通HTTP上安全地传输密码
2007/07/21 PHP
php 在线打包_支持子目录
2008/06/28 PHP
php懒人函数 自动添加数据
2011/06/28 PHP
PHP加密扩展库Mcrypt安装和实例
2013/11/10 PHP
win平台安装配置Nginx+php+mysql 环境
2016/01/12 PHP
利用PHP将图片转换成base64编码的实现方法
2016/09/13 PHP
IE和Firefox在JavaScript应用中的兼容性探讨
2008/04/01 Javascript
Javascript排序算法之计数排序的实例
2014/04/05 Javascript
jquery的clone方法应用于textarea和select的bug修复
2014/06/26 Javascript
JavaScript中var关键字的使用详解
2015/08/14 Javascript
jquery实现叠层3D文字特效代码分享
2015/08/21 Javascript
基于jQuery和CSS3制作数字时钟附源码下载(jquery篇)
2015/11/24 Javascript
js+css实现select的美化效果
2016/03/24 Javascript
jQuery插件实现文件上传功能(支持拖拽)
2020/08/27 Javascript
详解有关easyUI的拖动操作中droppable,draggable用法例子
2017/06/03 Javascript
JS 中LocalStorage和SessionStorage的使用
2017/08/17 Javascript
React.Js添加与删除onScroll事件的方法详解
2017/11/03 Javascript
在Vue中使用echarts的方法
2018/02/05 Javascript
vuex actions传递多参数的处理方法
2018/09/18 Javascript
Python实战小程序利用matplotlib模块画图代码分享
2017/12/09 Python
Pycharm设置utf-8自动显示方法
2019/01/17 Python
Python模块、包(Package)概念与用法分析
2019/05/31 Python
pyhton中__pycache__文件夹的产生与作用详解
2019/11/24 Python
pytorch ImageFolder的覆写实例
2020/02/20 Python
Python实现画图软件功能方法详解
2020/07/28 Python
Python eval函数原理及用法解析
2020/11/14 Python
详解Python调用系统命令的六种方法
2021/01/28 Python
德国机车企业:FC-Moto
2017/10/27 全球购物
英国在线药房和在线医生:LloydsPharmacy
2019/10/21 全球购物
银行自荐信范文
2013/10/07 职场文书
大学四年学习的自我评价分享
2013/12/09 职场文书
十八届三中全会感言
2014/03/10 职场文书
药品营销专业毕业生自荐信
2014/07/02 职场文书
初中政治教师教学反思
2016/02/23 职场文书
股东合作协议书模板2篇
2019/11/05 职场文书
mysql死锁和分库分表问题详解
2021/04/16 MySQL