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的curl实现get和post的代码
Aug 23 PHP
PHP array_flip() 删除重复数组元素专用函数
May 16 PHP
php数字游戏 计算24算法
Jun 10 PHP
Laravel 5框架学习之表单验证
Apr 08 PHP
PHP生成树的方法
Jul 28 PHP
php简单实现批量上传图片的方法
May 09 PHP
PHP 闭包详解及实例代码
Sep 28 PHP
通过php动态传数据到highcharts
Apr 05 PHP
PHP解决中文乱码
Apr 28 PHP
详解PHP处理字符串类似indexof的方法函数
Jun 11 PHP
PDO::exec讲解
Jan 28 PHP
PHP调用QQ互联接口实现QQ登录网站功能示例
Oct 24 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
精致的人儿就要挑杯子喝咖啡
2021/03/03 冲泡冲煮
PHP 文件上传功能实现代码
2009/06/24 PHP
php的ajax简单实例
2014/02/27 PHP
CI框架集成Smarty的方法分析
2016/05/17 PHP
PHP实现批量删除(封装)
2017/04/28 PHP
三个思路解决laravel上传文件报错:413 Request Entity Too Large问题
2017/11/13 PHP
使用 laravel sms 构建短信验证码发送校验功能
2017/11/06 PHP
Laravel配置全局公共函数的方法步骤
2019/05/09 PHP
获取URL地址中的文件名和参数的javascript代码
2009/09/02 Javascript
js 弹出框 替代浏览器的弹出框
2010/10/29 Javascript
基于jquery的当鼠标滚轮到最底端继续加载新数据思路分享(多用于微博、空间、论坛 )
2011/10/10 Javascript
Jquery获取元素的父容器对象示例代码
2014/02/10 Javascript
通过node-mysql搭建Windows+Node.js+MySQL环境的教程
2016/03/01 Javascript
javascript事件委托的用法及其好处简析
2016/04/04 Javascript
JS图片放大效果简单实现代码
2016/09/08 Javascript
Vue2.0生命周期的理解
2018/08/20 Javascript
JavaScript指定断点操作实例教程
2018/09/18 Javascript
[01:04:14]VP vs TNC 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
python基础教程项目三之万能的XML
2018/04/02 Python
python异步编程 使用yield from过程解析
2019/09/25 Python
基于python3 的百度图片下载器的实现代码
2019/11/05 Python
Python numpy.zero() 初始化矩阵实例
2019/11/27 Python
python 字典访问的三种方法小结
2019/12/05 Python
如何把python项目部署到linux服务器
2020/08/26 Python
利用CSS3的border-radius绘制太极及爱心图案示例
2016/05/17 HTML / CSS
全球速卖通法国在线交易平台:AliExpress法国
2017/07/07 全球购物
美国小蜜蜂Burt’s Bees德国官网:天然唇部、皮肤和身体护理产品
2020/06/14 全球购物
解释一下抽象方法和抽象类
2016/08/27 面试题
认识深刻的检讨书
2014/02/16 职场文书
健康家庭事迹材料
2014/05/02 职场文书
关于护士节的演讲稿
2014/05/26 职场文书
2014年村党支部工作总结
2014/12/04 职场文书
2015年六一儿童节活动方案
2015/05/05 职场文书
2019已经过半,你知道年中工作总结该怎么写吗?
2019/07/03 职场文书
MySQL infobright的安装步骤
2021/04/07 MySQL
关于Python中*args和**kwargs的深入理解
2021/08/07 Python