php操作memcache缓存方法分享


Posted in PHP onJune 03, 2015

使用memcache的前提是需要在服务端先配置好memcahche的环境!确认memcahce可以正常连接之后就可以在程序使用了!

<?php
/**
 * Memcache缓存操作
 * @author hxm
 * @version 1.0
 * @since 2015.05.04
 */
class MCache extends Object implements CacheFace
{
  private $mem = null; //Mem对象
   
  private $sId = 1;  //servier服务ID
   
  /**
   * 初始化Memcache
   *
   * @return Object
   */
  public function __construct()
  {
    if ( !class_exists('Memcache') )
    {
      throw new QException('PHP extension does not exist: Memcache');
    }
    $this->mem = new Memcache();
  }
   
  /**
   * 链接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->mem->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->mem->set( $key , $value ,MEMCACHE_COMPRESSED , $expire);
    } else {
      return $this->mem->add( $key , $value ,MEMCACHE_COMPRESSED , $expire);
    }
  }
   
  /**
   * 读取缓存
   *
   * @access private
   * @param  string $key 关键字
   * @param  int   $sid 选择第几台memcache服务器
   * @return array
   */
  public function get( $key , $sid)
  {
    $this->connect( $sid );
    return $this->mem->get($key);
  }
   
  /**
   * 清洗(删除)已经存储的所有的元素
   *
   * @access private
   * @return array
   */
  public function flush()
  {
    $this->connect();
    return $this->mem->flush();
  }
  /**
   * 删除缓存
   *
   * @access private
   * @param  string $key 关键字
   * @param  int   $sid 选择第几台memcache服务器
   * @return array
   */
  public function remove( $key , $sid)
  {
    $this->connect();
    return $this->mem->delete($key);
  }
   
  /**
   * 析构函数
   * 最后关闭memcache
   */
  public function __destruct()
  {
    /*if(! $this->mem)
    {
      $this->mem->close();
    }*/
  }
}

以上所述就是本文的全部内容了,希望大家能够喜欢。

PHP 相关文章推荐
打造计数器DIY三步曲(上)
Oct 09 PHP
用ODBC的分页显示
Oct 09 PHP
php 用sock技术发送邮件的函数
Jul 21 PHP
关于svn冲突的解决方法
Jun 21 PHP
php自动加载autoload机制示例分享
Feb 20 PHP
PHP中使用GD库绘制折线图 折线统计图的绘制方法
Nov 09 PHP
php中preg_replace正则替换用法分析【一次替换多个值】
Jan 17 PHP
自制PHP框架之路由与控制器
May 07 PHP
PHP实现动态添加XML中数据的方法
Mar 30 PHP
php使用curl模拟浏览器表单上传文件或者图片的方法
Nov 10 PHP
PHP pthreads v3在centos7平台下的安装与配置操作方法
Feb 21 PHP
php使用fputcsv实现大数据的导出操作详解
Feb 27 PHP
php操作redis缓存方法分享
Jun 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
You might like
discuz authcode 经典php加密解密函数解析
2020/07/12 PHP
PHP使用SMTP邮件服务器发送邮件示例
2018/08/28 PHP
php实现对文件压缩简单的方法
2019/09/29 PHP
JQuery中使用Ajax赋值给全局变量异常的解决方法
2014/01/10 Javascript
jquery实现弹出层遮罩效果的简单实例
2014/03/03 Javascript
nodejs文件操作模块FS(File System)常用函数简明总结
2014/06/05 NodeJs
JQuery插件iScroll实现下拉刷新,滚动翻页特效
2014/06/22 Javascript
JS小游戏之象棋暗棋源码详解
2014/09/25 Javascript
JavaScript中的small()方法使用详解
2015/06/08 Javascript
javascript带回调函数的异步脚本载入方法实例分析
2015/07/02 Javascript
Bootstrap每天必学之进度条
2015/11/30 Javascript
在React框架中实现一些AngularJS中ng指令的例子
2016/03/06 Javascript
nodejs微信公众号支付开发
2016/09/19 NodeJs
nodejs利用ajax实现网页无刷新上传图片实例代码
2017/06/06 NodeJs
五步轻松实现zTree的使用
2017/11/01 Javascript
Angular4的输入属性与输出属性实例详解
2017/11/29 Javascript
vue.js 实现评价五角星组件的实例代码
2018/08/13 Javascript
element ui table 增加筛选的方法示例
2018/11/02 Javascript
jquery层次选择器的介绍
2019/01/18 jQuery
vue遍历对象中的数组取值示例
2019/11/07 Javascript
Python subprocess模块学习总结
2014/03/13 Python
Python实现的二维码生成小软件
2014/07/11 Python
matplotlib绘图实例演示标记路径
2018/01/23 Python
Python实现的凯撒密码算法示例
2018/04/12 Python
Python cookbook(字符串与文本)在字符串的开头或结尾处进行文本匹配操作
2018/04/20 Python
python 自定义对象的打印方法
2019/01/12 Python
dataframe 按条件替换某一列中的值方法
2019/01/29 Python
Python玩转PDF的各种骚操作
2019/05/06 Python
Python OpenCV实现视频分帧
2019/06/01 Python
PyQT5 QTableView显示绑定数据的实例详解
2019/06/25 Python
HTML5的语法变化介绍
2013/08/13 HTML / CSS
2013年保送生自荐信格式
2013/11/20 职场文书
高校教师自荐信范文
2014/03/13 职场文书
2015年团支部年度工作总结
2015/05/27 职场文书
任命书格式模板
2015/09/22 职场文书
2016年小学生迎国庆广播稿
2015/12/18 职场文书