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目录导航文件代码
Oct 09 PHP
php+jquery编码方面的一些心得(utf-8 gb2312)
Oct 12 PHP
php三维数组去重(示例代码)
Nov 26 PHP
php不使用插件导出excel的简单方法
Mar 04 PHP
PHP输出缓存ob系列函数详解
Mar 11 PHP
摘自织梦CMS的HTTP文件下载类
Aug 08 PHP
PHP页面转UTF-8中文编码乱码的解决办法
Oct 20 PHP
关于php中一些字符串总结
May 05 PHP
php实现的二分查找算法示例
Jun 20 PHP
PHP文件系统管理(实例讲解)
Sep 19 PHP
PHP PDOStatement::bindParam讲解
Jan 30 PHP
PHP添加PNG图片背景透明水印操作类定义与用法示例
Mar 12 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开发工具之vs2005图解
2008/01/12 PHP
供参考的 php 学习提高路线分享
2011/10/23 PHP
PHP在线生成二维码(google api)的实现代码详解
2013/06/04 PHP
php中的PHP_EOL换行符详细解析
2013/10/26 PHP
教你如何快捷的使用cmd访问mysql小技巧
2014/05/26 PHP
php类常量用法实例分析
2015/07/09 PHP
php中namespace及use用法分析
2016/12/06 PHP
php strftime函数获取日期时间(switch用法)
2018/05/16 PHP
基于jquery实现漂亮的动态信息提示效果
2011/08/02 Javascript
jQuery插件原来如此简单 jQuery插件的机制及实战
2012/02/07 Javascript
JQuery select控件的相关操作实现代码
2012/09/14 Javascript
基于mouseout和mouseover等类似事件的冒泡问题解决方法
2013/11/18 Javascript
用Javascript获取页面元素的具体位置
2013/12/09 Javascript
JavaScript编程中布尔对象的基本使用
2015/10/25 Javascript
Javascript实现苹果悬浮虚拟按钮
2016/04/10 Javascript
原生js实现百叶窗效果及原理介绍
2016/04/12 Javascript
JavaScript第一篇之实现按钮全选、功能
2016/08/21 Javascript
详解在Angularjs中ui-sref和$state.go如何传递参数
2017/04/24 Javascript
详解Angular结合zTree异步加载节点数据
2018/01/20 Javascript
vuejs 制作背景淡入淡出切换动画的实例
2018/09/01 Javascript
详解react native页面间传递数据的几种方式
2018/11/07 Javascript
JS实现贪吃蛇游戏
2019/11/15 Javascript
[04:01]2014DOTA2国际邀请赛 TITAN告别Ohaiyo期望明年再战
2014/07/15 DOTA
[35:29]Secret vs VG 2018国际邀请赛淘汰赛BO3 第三场 8.23
2018/08/24 DOTA
Python中的多重装饰器
2015/04/11 Python
Python制作简易版小工具之计算天数的实现思路
2020/02/13 Python
Python实现井字棋小游戏
2020/03/09 Python
PyTorch 导数应用的使用教程
2020/08/31 Python
把富文本的回车转为br标签
2019/08/09 HTML / CSS
全球最大的跑步用品商店:Road Runner Sports
2016/09/11 全球购物
美国运动鞋和运动服零售商:Footaction
2017/04/07 全球购物
即时搜索数百万张门票:SeatsForEveryone.com
2018/08/26 全球购物
navabi英国:设计师大码女装
2019/06/25 全球购物
简述安装Slackware Linux系统的过程
2012/01/12 面试题
研发工程师岗位职责
2014/04/28 职场文书
《杜鹃的婚约》OP主题曲「凸凹」无字幕影像公开
2022/04/08 日漫