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实现框架(一)
Oct 09 PHP
自动跳转中英文页面
Oct 09 PHP
php桌面中心(三) 修改数据库
Mar 11 PHP
创建配置文件 用PHP写出自己的BLOG系统 2
Apr 12 PHP
php提交表单时判断 if($_POST[submit])与 if(isset($_POST[submit])) 的区别
Feb 08 PHP
PHP数学运算函数大汇总(经典值得收藏)
Apr 01 PHP
PHP的Json中文处理解决方案
Sep 29 PHP
PHP+jquery+CSS制作头像登录窗(仿QQ登陆)
Oct 20 PHP
ThinkPHP5实现作业管理系统中处理学生未交作业与已交作业信息的方法
Nov 12 PHP
PHP脚本自动识别验证码查询汽车违章
Dec 20 PHP
在laravel中使用Symfony的Crawler组件分析HTML
Jun 19 PHP
PHP设计模式之模板方法模式定义与用法详解
Apr 02 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 图像函数大举例(非原创)
2009/06/20 PHP
php去除字符串中空字符的常用方法小结
2015/03/17 PHP
php mysql获取表字段名称和字段信息的三种方法
2016/11/13 PHP
才发现的超链接js导致网页中GIF动画停止的解决方法
2007/11/02 Javascript
jQuery判断密码强度实现思路及代码
2013/04/24 Javascript
JavaScript中对象介绍
2014/12/31 Javascript
深入浅析Node.js 事件循环
2015/12/20 Javascript
javascript实现label标签跳出循环操作
2016/03/06 Javascript
避免jQuery名字冲突 noConflict()方法
2016/07/30 Javascript
javascript如何创建对象
2016/08/29 Javascript
vue实现简单表格组件实例详解
2017/04/16 Javascript
原生js轮播特效
2017/05/18 Javascript
vue自定义全局共用函数详解
2018/09/18 Javascript
浅析vue cli3 封装Svgicon组件正确姿势(推荐)
2020/04/27 Javascript
node使用async_hooks模块进行请求追踪
2021/01/28 Javascript
[52:39]完美世界DOTA2联赛PWL S3 CPG vs Forest 第一场 12.16
2020/12/17 DOTA
爬山算法简介和Python实现实例
2014/04/26 Python
Python中使用items()方法返回字典元素对的教程
2015/05/21 Python
详解JavaScript编程中的window与window.screen对象
2015/10/26 Python
Phantomjs抓取渲染JS后的网页(Python代码)
2016/05/13 Python
Python基于socket实现简单的即时通讯功能示例
2018/01/16 Python
python并发和异步编程实例
2018/11/15 Python
使用memory_profiler监测python代码运行时内存消耗方法
2018/12/03 Python
Python一键查找iOS项目中未使用的图片、音频、视频资源
2019/08/12 Python
Python学习笔记之For循环用法详解
2019/08/14 Python
Python Django2.0集成Celery4.1教程
2019/11/19 Python
Python + selenium + crontab实现每日定时自动打卡功能
2020/03/31 Python
Python中使用socks5设置全局代理的方法示例
2020/04/15 Python
django数据模型中null和blank的区别说明
2020/09/02 Python
华润集团网上药店:健一网
2016/09/19 全球购物
New Era英国官网:美国棒球帽品牌
2018/03/21 全球购物
意大利网上药房:Farmacia 33
2020/01/27 全球购物
小学生寒假家长评语
2014/04/16 职场文书
副乡长民主生活会个人对照检查材料思想汇报
2014/10/01 职场文书
红领巾广播站广播稿
2014/10/19 职场文书
教你一步步实现一个简易promise
2021/11/02 Javascript