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实现批量查询清除一句话后门的代码
Jan 20 PHP
PHP 用数组降低程序的时间复杂度
Dec 04 PHP
Windows7下PHP开发环境安装配置图文方法
May 20 PHP
PHP生成excel时单元格内换行问题的解决方法
Aug 26 PHP
PHP的一个基础知识 表单提交
Jul 04 PHP
CodeIgniter输出中文乱码的两种解决办法
Jun 12 PHP
在PHP程序中使用Rust扩展的方法
Jul 03 PHP
php实现向javascript传递数组的方法
Jul 27 PHP
php上传图片生成缩略图(GD库)
Jan 06 PHP
Yii2如何批量添加数据
May 17 PHP
基于PHP的登录和注册的功能的实现
Aug 06 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
Phpbean路由转发的php代码
2008/01/10 PHP
PHP获取一个字符串中间一部分字符的方法
2014/08/19 PHP
完美解决phpexcel导出到xls文件出现乱码的问题
2016/10/29 PHP
tp5.1 实现setInc字段自动加1
2019/10/18 PHP
Laravel 实现Controller向blade前台模板赋值的四种方式小结
2019/10/22 PHP
Centos7安装swoole扩展操作示例
2020/03/26 PHP
通用JS事件写法实现代码
2009/01/07 Javascript
某页码显示的helper 少量调整,另附js版
2010/09/12 Javascript
JQuery入门——事件切换之toggle()方法应用介绍
2013/02/05 Javascript
NodeJS与Mysql的交互示例代码
2013/08/18 NodeJs
JS禁用浏览器退格键实现思路及代码
2013/10/29 Javascript
利用JS进行图片的切换即特效展示图片
2013/12/03 Javascript
js获取url中&quot;?&quot;后面的字串方法
2014/05/15 Javascript
jQuery ui实现动感的圆角渐变网站导航菜单效果代码
2015/08/26 Javascript
javascript瀑布流式图片懒加载实例
2020/06/28 Javascript
AngularJS服务service用法总结
2016/12/13 Javascript
JavaScript对象引用与赋值实例详解
2017/03/15 Javascript
ES5学习教程之Array对象
2017/04/01 Javascript
微信小程序 实现列表项滑动显示删除按钮的功能
2017/04/13 Javascript
nodejs socket服务端和客户端简单通信功能
2017/09/14 NodeJs
微信小程序获取当前位置和城市名
2019/11/13 Javascript
Vue中函数防抖节流的理解及应用实现
2020/04/24 Javascript
解决vue项目,npm run build后,报路径错的问题
2020/08/13 Javascript
详解python并发获取snmp信息及性能测试
2017/03/27 Python
Python 判断文件或目录是否存在的实例代码
2018/07/19 Python
Python3爬楼梯算法示例
2019/03/04 Python
Pandas之groupby( )用法笔记小结
2019/07/23 Python
Python原始套接字编程实例解析
2020/01/29 Python
西班牙自行车和跑步商店:Alltricks
2018/07/07 全球购物
资生堂英国官网:Shiseido英国
2020/12/30 全球购物
三年级学生评语
2014/04/23 职场文书
学校领导班子对照检查材料
2014/08/28 职场文书
党支部对转正的意见
2015/06/02 职场文书
会计专业2019暑假实习报告
2019/06/21 职场文书
「睡美人」爱洛公主粘土人开订
2022/03/22 日漫
python中字符串String及其常见操作指南(方法、函数)
2022/04/06 Python