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的一些小问题
Jul 03 PHP
POSIX 风格和兼容 Perl 风格两种正则表达式主要函数的类比(preg_match, preg_replace, ereg, ereg_replace)
Oct 12 PHP
PHP COOKIE及时生效的方法介绍
Feb 14 PHP
php目录操作实例代码
Feb 21 PHP
php中用memcached实现页面防刷新功能
Aug 19 PHP
php实现word转html的方法
Jan 22 PHP
php查询操作实现投票功能
May 09 PHP
php简单实现短网址(短链)还原的方法(测试可用)
May 09 PHP
Zend Framework前端控制器用法示例
Dec 11 PHP
PHP开发APP端微信支付功能
Feb 17 PHP
CodeIgniter框架数据库基本操作示例
May 24 PHP
PHP SESSION跨页面传递失败解决方案
Dec 11 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/11/14 PHP
php基础教程 php内置函数实例教程
2012/08/21 PHP
PHP中VC6、VC9、TS、NTS版本的区别与用法详解
2013/10/26 PHP
Yii配置文件用法详解
2014/12/04 PHP
php基于CodeIgniter实现图片上传、剪切功能
2016/05/14 PHP
javascript的trim,ltrim,rtrim自定义函数
2008/09/21 Javascript
JS分页控件 可用于无刷新分页
2013/07/23 Javascript
Javascript浅谈之引用类型
2013/12/18 Javascript
用console.table()调试javascript
2014/09/04 Javascript
《JavaScript DOM 编程艺术》读书笔记之DOM基础
2015/01/09 Javascript
javascript中基本类型和引用类型的区别分析
2015/05/12 Javascript
jQuery元素属性操作实例(设置、获取及删除元素属性)
2016/09/08 Javascript
微信小程序 location API实例详解
2016/10/02 Javascript
easyui-edatagrid.js实现回车键结束编辑功能的实例
2017/04/12 Javascript
分享vue.js devtools遇到一系列问题
2017/10/24 Javascript
vue里面使用mui的弹出日期选择插件实例
2018/09/16 Javascript
Vue表单控件绑定图文详解
2019/02/11 Javascript
webpack proxy 使用(代理的使用)
2020/01/10 Javascript
vue-autoui自匹配webapi的UI控件的实现
2020/03/20 Javascript
javascript实现前端成语点击验证优化
2020/06/24 Javascript
uniapp与webview之间的相互传值的实现
2020/06/29 Javascript
[01:03:27]Optic vs VGJ.S 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
在Python中用get()方法获取字典键值的教程
2015/05/21 Python
Python实现感知机(PLA)算法
2017/12/20 Python
python 的 scapy库,实现网卡收发包的例子
2019/07/23 Python
解决python 执行sql语句时所传参数含有单引号的问题
2020/06/06 Python
css3使用animation属性实现炫酷效果(推荐)
2020/02/04 HTML / CSS
英国玛莎百货新西兰:Marks & Spencer New Zealand
2019/07/21 全球购物
翻译专业应届生求职信
2013/11/23 职场文书
活动总结怎么写
2014/04/28 职场文书
2014年社会实践活动总结范文
2014/04/29 职场文书
九一八事变纪念日演讲稿
2014/09/14 职场文书
云冈石窟导游词
2015/02/04 职场文书
MYSQL(电话号码,身份证)数据脱敏的实现
2021/05/28 MySQL
python非标准时间的转换
2021/07/25 Python
SQL语句中EXISTS的详细用法大全
2022/06/25 MySQL