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连接被重置的解决方法
Feb 15 PHP
修改php.ini不生效问题解决方法(上传大于8M的文件)
Jun 14 PHP
php获取本周星期一具体日期的方法
Apr 20 PHP
关于WordPress的SEO优化相关的一些PHP页面脚本技巧
Dec 10 PHP
PHP结合Jquery和ajax实现瀑布流特效
Jan 07 PHP
Zend Framework动作助手Json用法实例分析
Mar 05 PHP
Smarty模板常见的简单应用分析
Nov 15 PHP
php正则修正符用法实例详解
Dec 29 PHP
详解php中的implements 使用
Jun 13 PHP
PHP简单实现正则匹配省市区的方法
Apr 13 PHP
PDO::getAttribute讲解
Jan 28 PHP
laravel实现图片上传预览,及编辑时可更换图片,并实时变化的例子
Nov 14 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共享内存段示例分享
2014/01/20 PHP
php通过function_exists检测函数是否存在的方法
2015/03/18 PHP
PHP5.3新特性小结
2016/02/14 PHP
老生常谈php 正则中的i,m,s,x,e分别表示什么
2017/03/02 PHP
thinkPHP5使用Rabc实现权限管理
2019/08/28 PHP
Firefox+FireBug使JQuery的学习更加轻松愉快
2010/01/01 Javascript
映彩衣的js随笔(js图片切换效果)
2011/07/31 Javascript
js动态在form上插入enctype=multipart/form-data的问题
2012/05/24 Javascript
html向js方法传递参数具体实现
2013/08/08 Javascript
深入分析JQuery和JavaScript的异同
2014/10/23 Javascript
javascript结合Canvas 实现简易的圆形时钟
2015/03/11 Javascript
JavaScript模拟实现继承的方法
2015/03/30 Javascript
究竟什么是Node.js?Node.js有什么好处?
2015/05/29 Javascript
jQuery实现鼠标经过时出现隐藏层文字链接的方法
2015/10/12 Javascript
基于JavaScript实现类似于百度学术高级检索功能
2016/03/02 Javascript
Bootstrap所支持的表单控件实例详解
2016/05/16 Javascript
JS for...in 遍历语句用法实例分析
2016/08/24 Javascript
详解使用Next.js构建服务端渲染应用
2018/07/10 Javascript
详解vue2.0监听属性的使用心得及搭配计算属性的使用
2018/07/18 Javascript
[02:42]2014DOTA2国际邀请赛 三冰专访:我会打到Ti20
2014/07/13 DOTA
[01:12:40]DOTA2-DPC中国联赛 正赛 DLG vs XG BO3 第三场 1月25日
2021/03/11 DOTA
Python中使用glob和rmtree删除目录子目录及所有文件的例子
2014/11/21 Python
Python 将pdf转成图片的方法
2018/04/23 Python
Python绘制并保存指定大小图像的方法
2019/01/10 Python
pandas DataFrame索引行列的实现
2019/06/04 Python
Django 源码WSGI剖析过程详解
2019/08/05 Python
python自动保存百度盘资源到百度盘中的实例代码
2019/08/26 Python
python 制作简单的音乐播放器
2020/11/25 Python
在 Python 中使用 7zip 备份文件的操作
2020/12/11 Python
荷兰时尚精品店:Labels Fashion
2020/03/22 全球购物
大学生预备党员自我评价分享
2013/11/16 职场文书
大客户销售经理职责
2013/12/04 职场文书
安全大检查反思材料
2014/01/31 职场文书
2015年预备党员自我评价
2015/03/04 职场文书
2016年基层党组织创先争优承诺书
2016/03/25 职场文书
MySQL表锁、行锁、排它锁及共享锁的使用详解
2022/04/02 MySQL