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+MySQL的聊天室设计
Oct 09 PHP
推荐一篇入门级的Class文章
Mar 19 PHP
php环境无法上传文件的解决方法
Apr 30 PHP
php制作文本式留言板
Mar 18 PHP
PHP实现全角字符转为半角方法汇总
Jul 09 PHP
php结合md5实现的加密解密方法
Jan 25 PHP
[原创]php简单防盗链验证实现方法
Jul 09 PHP
PHP htmlentities()函数用法讲解
Feb 25 PHP
PHP根据key删除数组中指定的元素
Feb 28 PHP
TP3.2.3框架文件上传操作实例详解
Jan 23 PHP
ThinkPHP6.0如何利用自定义验证规则规范的实现登陆
Dec 16 PHP
PHP对接阿里云虚拟号的实现(号码隐私保护)
Apr 06 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+DBM的同学录程序(5)
2006/10/09 PHP
php生成4位数字验证码的实现代码
2015/11/23 PHP
PHP的PDO常用类库实例分析
2016/04/07 PHP
PHP与Java对比学习日期时间函数
2016/07/03 PHP
基于PHP实现短信验证码接口(容联运通讯)
2016/09/06 PHP
php使用gd2绘制基本图形示例(直线、圆、正方形)
2017/02/15 PHP
PHP/ThinkPHP实现批量打包下载文件的方法示例
2017/07/31 PHP
多个Laravel项目如何共用migrations详解
2018/09/25 PHP
php 多进程编程父进程的阻塞与非阻塞实例分析
2020/02/22 PHP
JS 自动安装exe程序
2008/11/30 Javascript
CSS和Javascript简单复习资料
2010/06/29 Javascript
JavaScript 在网页上单击鼠标的地方显示层及关闭层
2012/12/30 Javascript
jquery中ajax处理跨域的三大方式
2016/01/05 Javascript
如何利用Promises编写更优雅的JavaScript代码
2016/05/17 Javascript
浅谈JQuery+ajax+jsonp 跨域访问
2016/06/25 Javascript
JS中的进制转换以及作用
2016/06/26 Javascript
BootStrap便签页的简单应用
2017/01/06 Javascript
Vue.js获取被选择的option的value和text值方法
2018/08/24 Javascript
[02:07]DOTA2超级联赛专访BBC:难忘网吧超神经历
2013/06/09 DOTA
[01:21]DOTA2新纪元-7.0新版本即将开启!
2016/12/11 DOTA
[41:52]2018DOTA2亚洲邀请赛3月29日 小组赛A组 TNC VS OpTic
2018/03/30 DOTA
python shell根据ip获取主机名代码示例
2017/11/25 Python
解决pytorch报错:AssertionError: Invalid device id的问题
2020/01/10 Python
pytorch1.0中torch.nn.Conv2d用法详解
2020/01/10 Python
Keras load_model 导入错误的解决方式
2020/06/09 Python
详解使用postMessage解决iframe跨域通信问题
2019/11/01 HTML / CSS
美国流行背包品牌:JanSport(杰斯伯)
2018/03/02 全球购物
GE设备配件:GE Appliance Parts(家电零件、配件和滤水器)
2018/11/28 全球购物
init进程的作用
2012/04/12 面试题
关于工作时间玩手机的检讨书
2014/09/18 职场文书
村主任群众路线教育实践活动个人对照检查材料思想汇报
2014/10/01 职场文书
2014年大学班级工作总结
2014/11/14 职场文书
卫生院艾滋病宣传活动总结
2015/05/09 职场文书
运动会三级跳加油稿
2015/07/21 职场文书
2022新作动画《福星小子》释出宣传影片 加入内田真礼&宫野真守配音演出
2022/04/08 日漫
SpringBoot前端后端分离之Nginx服务器下载安装过程
2022/08/14 Servers