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 得到根目录的 __FILE__ 常量
Jul 23 PHP
PHP 实现explort() 功能的详解
Jun 20 PHP
CodeIgniter使用phpcms模板引擎
Nov 12 PHP
PHP多线程编程之管道通信实例分析
Mar 07 PHP
PHP学习笔记(一):基本语法之标记、空白、和注释
Apr 17 PHP
PHP中error_reporting()用法详解
Aug 31 PHP
php简单构造json多维数组的方法示例
Jun 08 PHP
PHP判断是否是微信打开还是浏览器打开的方法
Feb 27 PHP
对laravel的session获取与存取方法详解
Oct 08 PHP
如何通过PHP实现Des加密算法代码实例
May 09 PHP
swoole锁的机制代码实例讲解
Mar 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
php横向重复区域显示二法
2008/09/25 PHP
连接到txt文本的超链接,不直接打开而是点击后下载的处理方法
2009/07/01 PHP
深入PHP与浏览器缓存的分析
2013/06/03 PHP
zf框架的校验器InArray使用示例
2014/03/13 PHP
ThinkPHP3.1基础知识快速入门
2014/06/19 PHP
解决php用mysql方式连接数据库出现Deprecated报错问题
2019/12/25 PHP
网页上的Javascript编辑器和代码格式化
2010/04/25 Javascript
javascript setTimeout和setInterval计时的区别详解
2013/06/21 Javascript
利用jQuary实现文字浮动提示效果示例代码
2013/12/26 Javascript
vue 2.0路由之路由嵌套示例详解
2017/05/08 Javascript
详解redis在nodejs中的应用
2018/05/02 NodeJs
JS中判断字符串存在和非空的方法
2018/09/12 Javascript
关于angular引入ng-zorro的问题浅析
2020/09/09 Javascript
JavaScript常用进制转换及位运算实例解析
2020/10/14 Javascript
Python下使用Psyco模块优化运行速度
2015/04/05 Python
Python代码调试的几种方法总结
2015/04/15 Python
分享Python字符串关键点
2015/12/13 Python
浅谈tensorflow1.0 池化层(pooling)和全连接层(dense)
2018/04/27 Python
Pyinstaller 打包exe教程及问题解决
2019/08/16 Python
python 6.7 编写printTable()函数表格打印(完整代码)
2020/03/25 Python
CSS3中的元素过渡属性transition示例详解
2016/11/30 HTML / CSS
10分钟入门CSS3 Animation
2018/12/25 HTML / CSS
Fashion Eyewear美国:英国线上设计师眼镜和太阳镜的零售商
2016/08/15 全球购物
DataReader和DataSet的异同
2014/12/31 面试题
大学生的创业计划书就该这么写
2014/01/30 职场文书
保护母亲河倡议书
2014/04/14 职场文书
文明班集体申报材料
2014/05/23 职场文书
付款委托书范本
2014/10/05 职场文书
体检通知范文
2015/04/21 职场文书
golang判断key是否在map中的代码
2021/04/24 Golang
Python源码解析之List
2021/05/21 Python
关于Numpy之repeat、tile的用法总结
2021/06/02 Python
Golang中channel的原理解读(推荐)
2021/10/16 Golang
Redis+Lua脚本实现计数器接口防刷功能(升级版)
2022/02/12 Redis
海康机器人重磅发布全新算法开发平台VM4.2
2022/04/21 数码科技
Win11 Build 25179预览版发布(附更新内容+ISO官方镜像下载)
2022/08/14 数码科技