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 socke 向指定页面提交数据
Jul 23 PHP
php源码加密 仿微盾PHP加密专家(PHPCodeLock)
May 06 PHP
PHP原生模板引擎 最简单的模板引擎
Apr 25 PHP
apache mysql php 源码编译使用方法
May 03 PHP
typecho插件编写教程(五):核心代码
May 28 PHP
AJAX PHP无刷新form表单提交的简单实现(推荐)
Sep 09 PHP
一个简单的php MVC留言本实例代码(必看篇)
Sep 22 PHP
浅谈PHP面向对象之访问者模式+组合模式
May 22 PHP
PHP实现的策略模式简单示例
Aug 25 PHP
PHP中PDO事务处理操作示例
May 02 PHP
laravel withCount 统计关联数量的方法
Oct 10 PHP
php中使用array_filter()函数过滤数组实例讲解
Mar 03 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中的UNICODE 编码与解码
2013/06/29 PHP
php并发加锁问题分析与设计代码实例讲解
2021/02/26 PHP
jquery构造器的实现代码小结
2011/05/16 Javascript
找出字符串中出现次数最多的字母和出现次数精简版
2012/11/07 Javascript
iframe窗口高度自适应的又一个巧妙实现思路
2014/04/04 Javascript
基于jQuery+JSON的省市二三级联动效果
2015/06/05 Javascript
js实现网页收藏功能
2015/12/17 Javascript
原生js开发的日历插件
2017/02/04 Javascript
BootStrap实现带关闭按钮功能
2017/02/15 Javascript
vue.js移动端app实战1:初始配置详解
2017/07/24 Javascript
JS实现table表格内针对某列内容进行即时搜索筛选功能
2018/05/11 Javascript
Bootstrap Table中的多选框删除功能
2018/07/15 Javascript
微信小程序实现发送模板消息功能示例【通过openid推送消息给用户】
2019/05/05 Javascript
Vue数字输入框组件的使用方法
2019/10/19 Javascript
Node.js web 应用如何封装到Docker容器中
2020/09/01 Javascript
[54:47]Liquid vs VP Supermajor决赛 BO 第五场 6.10
2018/07/05 DOTA
在Python中的Django框架中进行字符串翻译
2015/07/27 Python
Python绘制3d螺旋曲线图实例代码
2017/12/20 Python
matlab中实现矩阵删除一行或一列的方法
2018/04/04 Python
Python实现App自动签到领取积分功能
2018/09/29 Python
对Python 窗体(tkinter)文本编辑器(Text)详解
2018/10/11 Python
python 处理string到hex脚本的方法
2018/10/26 Python
Python和Go语言的区别总结
2019/02/20 Python
python词云库wordcloud的使用方法与实例详解
2020/02/17 Python
PyQT5 实现快捷键复制表格数据的方法示例
2020/06/19 Python
jupyter notebook远程访问不了的问题解决方法
2021/01/11 Python
常用的HTML5列表标签
2017/06/20 HTML / CSS
英国在线自行车店:Merlin Cycles
2018/08/20 全球购物
意大利在线购买隐形眼镜网站:VisionDirect.it
2019/03/18 全球购物
通信工程专业女生个人求职信
2013/09/21 职场文书
劳动仲裁撤诉申请书
2015/05/18 职场文书
关于springboot配置druid数据源不生效问题(踩坑记)
2021/09/25 Java/Android
JavaScript函数柯里化
2021/11/07 Javascript
Python基本知识点总结
2022/04/07 Python
苹果发布了MagSafe固件更新,可以不外接电源实现最高7.5W充电
2022/04/21 数码科技
在windows server 2012 r2中安装mysql的详细步骤
2022/07/23 Servers