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 相关文章推荐
谈PHP生成静态页面分析 模板+缓存+写文件
Aug 17 PHP
php中全局变量global的使用演示代码
May 18 PHP
php中对2个数组相加的函数
Jun 24 PHP
apache mysql php 源码编译使用方法
May 03 PHP
php并发对MYSQL造成压力的解决方法
Feb 21 PHP
ThinkPHP3.1新特性之内容解析输出详解
Jun 19 PHP
destoon实现首页显示供应、企业、资讯条数的方法
Jul 15 PHP
在Mac OS下搭建LNMP开发环境的步骤详解
Mar 10 PHP
老生常谈PHP面向对象之解释器模式
May 17 PHP
支持汉转拼和拼音分词的PHP中文工具类ChineseUtil
Feb 23 PHP
PHP常用函数之根据生日计算年龄功能示例
Oct 21 PHP
PHP 出现 http500 错误的解决方法
Mar 09 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
php 连接mysql连接被重置的解决方法
2011/02/15 PHP
五款PHP代码重构工具推荐
2014/10/14 PHP
PHP registerXPathNamespace()函数讲解
2019/02/03 PHP
Javascript 篱式条件判断
2008/08/22 Javascript
Domino中运用jQuery读取视图内容的方法
2009/10/21 Javascript
Javascript 网页黑白效果实现代码(兼容IE/FF等)
2010/04/23 Javascript
javascript基础知识大全 便于大家学习,也便于我自己查看
2012/08/17 Javascript
JQuery入门—编写一个简单的JQuery应用案例
2013/01/03 Javascript
简约JS日历控件 实例代码
2013/07/12 Javascript
点击button获取text内容并改变样式的js实现
2014/09/09 Javascript
最简单的JavaScript验证整数、小数、实数、有效位小数正则表达式
2015/04/17 Javascript
值得分享的Bootstrap Ace模板实现菜单和Tab页效果
2015/12/30 Javascript
利用vue-router实现二级菜单内容转换
2016/11/30 Javascript
[原创]JS基于FileSaver.js插件实现文件保存功能示例
2016/12/08 Javascript
关于使用axios的一些心得技巧分享
2017/07/02 Javascript
React-Router如何进行页面权限管理的方法
2017/12/06 Javascript
详解vue2.0+vue-video-player实现hls播放全过程
2018/03/02 Javascript
JavaScript运行机制实例分析
2020/04/11 Javascript
v-slot和slot、slot-scope之间相互替换实例
2020/09/04 Javascript
[01:02:46]VGJ.S vs NB 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
Python实现两个list对应元素相减操作示例
2017/06/09 Python
Python字符编码与函数的基本使用方法
2017/09/30 Python
Python中新式类与经典类的区别详析
2019/07/10 Python
python多线程使用方法实例详解
2019/12/30 Python
PyTorch 随机数生成占用 CPU 过高的解决方法
2020/01/13 Python
如何将Pycharm中调整字体大小的方式设置为&quot;ctrl+鼠标滚轮上下滑&quot;
2020/11/17 Python
澳大利亚在线划船、露营和钓鱼商店:BCF Australia
2020/03/22 全球购物
环境科学专业个人求职信
2013/09/26 职场文书
自我评价范文
2013/12/22 职场文书
电脑销售顾问自荐信
2014/01/29 职场文书
入党积极分子自我批评思想汇报
2014/10/10 职场文书
廉政承诺书2015
2015/04/28 职场文书
房贷收入证明范本
2015/06/12 职场文书
提档介绍信范文
2015/10/22 职场文书
残联2016年全国助残日活动总结
2016/04/01 职场文书
React Hook用法示例详解(6个常见hook)
2021/04/28 Javascript