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 相关文章推荐
PHP5.0对象模型探索之抽象方法和抽象类
Sep 05 PHP
一个用mysql_odbc和php写的serach数据库程序
Oct 09 PHP
php array_filter除去数组中的空字符元素
Jun 21 PHP
php 删除目录下N分钟前创建的所有文件的实现代码
Aug 10 PHP
ThinkPHP模板自定义标签使用方法
Jun 26 PHP
php导入大量数据到mysql性能优化技巧
Dec 29 PHP
php使用explode()函数将字符串拆分成数组的方法
Feb 17 PHP
高质量PHP代码的50个实用技巧必备(下)
Jan 22 PHP
PHP消息队列用法实例分析
Feb 12 PHP
Laravel 5.5基于内置的Auth模块实现前后台登陆详解
Dec 21 PHP
PHP htmlspecialchars()函数用法与实例讲解
Mar 08 PHP
php探针使用原理和技巧讲解
Sep 17 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内置访问资源的超时时间 time_out file_get_contents read_file
2013/06/03 PHP
php定义一个参数带有默认值的函数实例分析
2015/03/16 PHP
ThinkPHP中where()使用方法详解
2016/04/19 PHP
PHP实现Markdown文章上传到七牛图床的实例内容
2020/02/11 PHP
treepanel动态加载数据实现代码
2012/12/15 Javascript
鼠标滚轴控制文本框值的JS代码
2013/11/19 Javascript
分享一个自己写的简单的javascript分页组件
2015/02/15 Javascript
jquery简单实现幻灯片的方法
2015/08/03 Javascript
JS使用parseInt解析数字实现求和的方法
2015/08/05 Javascript
JS实现来回出现文字的状态栏特效代码
2015/10/31 Javascript
jQuery 1.9.1源码分析系列(十五)动画处理之缓动动画核心Tween
2015/12/03 Javascript
Node.js的Web模板引擎ejs的入门使用教程
2016/06/06 Javascript
使用JQuery选择HTML遍历函数的方法
2016/09/17 Javascript
bootstrap 模态框(modal)实现水平垂直居中显示
2017/01/23 Javascript
Bootstrap模态框使用详解
2017/02/15 Javascript
vue2.0 axios前后端数据处理实例代码
2017/06/30 Javascript
ReactJS实现表单的单选多选和反选的示例
2017/10/13 Javascript
Angular实现svg和png图片下载实现
2019/05/05 Javascript
vue+element实现表格新增、编辑、删除功能
2019/05/28 Javascript
Python生成随机密码
2015/03/10 Python
python @property的用法及含义全面解析
2018/02/01 Python
8段用于数据清洗Python代码(小结)
2019/10/31 Python
python 实现读取csv数据,分类求和 再写进 csv
2020/05/18 Python
pycharm配置安装autopep8自动规范代码的实现
2021/03/02 Python
好莱坞百老汇御用王牌美妆:Koh Gen Do 江原道
2018/04/03 全球购物
CheapTickets香港机票预订网站:CheapTickets.hk
2019/06/26 全球购物
电气自动化大学生求职信
2013/10/16 职场文书
幼儿园秋游活动方案
2014/01/21 职场文书
中秋节超市促销方案
2014/01/30 职场文书
商务英语广告词大全
2014/03/18 职场文书
2014年节能降耗工作总结
2014/12/11 职场文书
大学生毕业评语
2014/12/31 职场文书
2015年重阳节慰问信
2015/03/23 职场文书
nginx内存池源码解析
2021/11/20 Servers
vue如何使用模拟的json数据查看效果
2022/03/31 Vue.js
直播实况, OMG破敌三路五十分钟大战神技局摩托车
2022/04/01 DOTA