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 正则 过滤html 的超链接
Jun 02 PHP
php添加文章时生成静态HTML文章的实现代码
Feb 17 PHP
ThinkPHP模板比较标签用法详解
Jun 30 PHP
php自定义加密与解密程序实例
Dec 31 PHP
PHP查询快递信息的方法
Mar 07 PHP
php中PDO方式实现数据库的增删改查
May 17 PHP
php官方微信接口大全(微信支付、微信红包、微信摇一摇、微信小店)
Dec 21 PHP
PHP实现通过URL提取根域名
Mar 31 PHP
thinkPHP引入类的方法详解
Dec 08 PHP
PHP实现十进制、二进制、八进制和十六进制转换相关函数用法分析
Apr 25 PHP
自写的利用PDO对mysql数据库增删改查操作类
Feb 19 PHP
win10下 php安装seaslog扩展的详细步骤
Dec 04 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
浅谈laravel 5.6 安装 windows上使用composer的安装过程
2019/10/18 PHP
jQuery提交多个表单的小例子
2013/06/30 Javascript
深入浅析JavaScript中对事件的三种监听方式
2015/09/29 Javascript
JS组件系列之Bootstrap Icon图标选择组件
2016/01/28 Javascript
在Javascript操作JSON对象,增加 删除 修改的简单实现
2016/06/02 Javascript
jquery validate表单验证插件
2016/09/06 Javascript
微信小程序  modal弹框组件详解
2016/10/27 Javascript
JavaScript日期对象(Date)基本用法示例
2017/01/18 Javascript
Angular.js自动化测试之protractor详解
2017/07/07 Javascript
Vue0.1的过滤代码如何添加到Vue2.0直接使用
2017/08/23 Javascript
JS中利用FileReader实现上传图片前本地预览功能
2018/03/02 Javascript
JS+CSS3实现的简易钟表效果示例
2019/04/13 Javascript
layui-table对返回的数据进行转变显示的实例
2019/09/04 Javascript
Vue简单实现原理详解
2020/05/07 Javascript
JavaScript eval()函数定义及使用方法详解
2020/07/07 Javascript
vue 组件间的通信之子组件向父组件传值的方式
2020/07/29 Javascript
Python time模块详解(常用函数实例讲解,非常好)
2014/04/24 Python
Python里disconnect UDP套接字的方法
2015/04/23 Python
Python使用matplotlib绘制动画的方法
2015/05/20 Python
使用pyecharts无法import Bar的解决方案
2020/04/23 Python
用python写一个windows下的定时关机脚本(推荐)
2017/03/21 Python
python实现自动发送邮件
2018/06/20 Python
详解python中init方法和随机数方法
2019/03/13 Python
django model通过字典更新数据实例
2020/04/01 Python
django filter过滤器实现显示某个类型指定字段不同值方式
2020/07/16 Python
PyCharm 光标变成黑块的解决方式
2021/02/06 Python
python链表类中获取元素实例方法
2021/02/23 Python
酒店服务与管理毕业生求职信
2013/11/02 职场文书
面试求职的个人自我评价
2013/11/16 职场文书
医院门卫岗位职责
2013/12/30 职场文书
2014年酒店服务员工作总结
2014/12/08 职场文书
2015年班主任德育工作总结
2015/05/21 职场文书
2016年12月份红领巾广播稿
2015/12/21 职场文书
python异常中else的实例用法
2021/06/15 Python
Java并发编程之详解CyclicBarrier线程同步
2021/06/23 Java/Android
Oracle删除归档日志及添加定时任务
2022/06/28 Oracle