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 一个页面执行时间类代码
Mar 05 PHP
深入PHP异步执行的详解
Jun 03 PHP
PHP Global定义全局变量使用说明
Aug 15 PHP
php header功能的使用
Oct 28 PHP
百度ping方法使用示例 自动ping百度
Jan 26 PHP
PHP OPP机制和模式简介(抽象类、接口和契约式编程)
Jun 09 PHP
ThinkPHP实现一键清除缓存方法
Jun 26 PHP
PHP和Shell实现检查SAMBA与NFS Server是否存在
Jan 07 PHP
PHP获取当前日期和时间及格式化方法参数
May 11 PHP
php版微信自定义回复功能示例
Dec 05 PHP
PHP使用redis消息队列发布微博的方法示例
Jun 22 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
整理的9个实用的PHP库简介和下载
2010/11/09 PHP
php使用Jpgraph绘制复杂X-Y坐标图的方法
2015/06/10 PHP
php读取本地json文件的实例
2018/03/07 PHP
mongodb和php的用法详解
2019/03/25 PHP
laravel5.6中的外键约束示例
2019/10/23 PHP
最近项目写了一些js,水平有待提高
2009/01/31 Javascript
html dom节点操作(获取/修改/添加或删除)
2014/01/23 Javascript
原生javascript实现的分页插件pagenav
2014/08/28 Javascript
jquery使整个div区域可以点击的方法
2015/06/24 Javascript
基于javascript实现全屏漂浮广告
2016/03/31 Javascript
javascript ASCII和Hex互转的实现方法
2016/12/27 Javascript
Angular2入门教程之模块和组件详解
2017/05/28 Javascript
Angularjs验证用户输入的字符串是否为日期时间
2017/06/01 Javascript
JS实现下拉菜单列表与登录注册弹窗效果
2017/08/10 Javascript
Vue结合路由配置递归实现菜单栏功能
2020/06/16 Javascript
Python实现导出数据生成excel报表的方法示例
2017/07/12 Python
Python实现读取json文件到excel表
2017/11/18 Python
解决pandas中读取中文名称的csv文件报错的问题
2018/07/04 Python
python绘制简单彩虹图
2018/11/19 Python
python 用所有标点符号分隔句子的示例
2019/07/15 Python
PYTHON发送邮件YAGMAIL的简单实现解析
2019/10/28 Python
python对象转字典的两种实现方式示例
2019/11/07 Python
python输出第n个默尼森数的实现示例
2020/03/08 Python
利用python绘制中国地图(含省界、河流等)
2020/09/21 Python
使用Python制作一盏 3D 花灯喜迎元宵佳节
2021/02/26 Python
python源文件的字符编码知识点详解
2021/03/04 Python
HTML5里的placeholder属性使用实例和美化显示效果的方法
2014/04/23 HTML / CSS
Spartoo芬兰:欧洲最大的网上鞋店
2016/08/28 全球购物
奢华时尚的独特视角:La Garçonne
2018/06/07 全球购物
巴西一家专门从事家居和装饰的连锁店:Camicado
2019/08/14 全球购物
企业门卫岗位职责
2013/12/12 职场文书
大学生毕业的自我评价分享
2014/01/02 职场文书
党员志愿者活动方案
2014/08/28 职场文书
食品委托检验协议书范本
2014/09/12 职场文书
安全教育日主题班会
2015/08/13 职场文书
将图片保存到mysql数据库并展示在前端页面的实现代码
2021/05/02 MySQL