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 相关文章推荐
兼容firefox,chrome的网页灰度效果
Aug 08 PHP
基于php无限分类的深入理解
Jun 02 PHP
使用PHP实现Mysql读写分离
Jun 28 PHP
基于simple_html_dom的使用小结
Jul 01 PHP
php自定义函数实现JS的escape的方法示例
Jul 07 PHP
PHP模拟http请求的方法详解
Nov 09 PHP
WAF的正确bypass
Jan 05 PHP
老生常谈PHP位运算的用途
Mar 12 PHP
CI框架附属类用法分析
Dec 26 PHP
Laravel框架实现的批量删除功能示例
Jan 16 PHP
YII框架http缓存操作示例
Apr 29 PHP
YII2框架使用控制台命令的方法分析
Mar 18 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
PHP5中虚函数的实现方法分享
2011/04/20 PHP
Parse正式发布开源PHP SDK
2014/08/11 PHP
使用PHPCMS搭建wap手机网站
2015/09/20 PHP
学习php设计模式 php实现原型模式(prototype)
2015/12/07 PHP
完美解决Thinkphp3.2中插入相同数据的问题
2017/08/01 PHP
jquery.pagination.js 无刷新分页实现步骤分享
2012/05/23 Javascript
浅谈javascript 函数属性和方法
2015/01/21 Javascript
window.onload与$(document).ready()的区别分析
2015/05/30 Javascript
如何用js 实现依赖注入的思想,后端框架思想搬到前端来
2015/08/03 Javascript
CSS+jQuery实现简单的折叠菜单
2016/12/20 Javascript
AngularJS的ng-repeat指令与scope继承关系实例详解
2017/01/21 Javascript
Jquery与Bootstrap实现后台管理页面增删改查功能示例
2017/01/22 Javascript
基于AGS JS开发自定义贴图图层
2017/03/31 Javascript
基于BootStrap multiselect.js实现的下拉框联动效果
2017/07/28 Javascript
谈谈JS中的!!
2017/12/07 Javascript
Vue-cli Eslint在vscode里代码自动格式化的方法
2018/02/23 Javascript
vue中组件的3种使用方式详解
2019/03/23 Javascript
js前端面试之同步与异步问题详解
2019/04/03 Javascript
[50:59]2018DOTA2亚洲邀请赛 4.7 总决赛 LGD vs Mineski第四场
2018/04/10 DOTA
用python写扫雷游戏实例代码分享
2018/05/27 Python
pandas带有重复索引操作方法
2018/06/08 Python
详解Python 调用C# dll库最简方法
2019/06/20 Python
基于Python的微信机器人开发 微信登录和获取好友列表实现解析
2019/08/21 Python
python自动循环定时开关机(非重启)测试
2019/08/26 Python
Pygame框架实现飞机大战
2020/08/07 Python
python基于Kivy写一个图形桌面时钟程序
2021/01/28 Python
python中spy++的使用超详细教程
2021/01/29 Python
html5 svg 中元素点击事件添加方法
2013/01/16 HTML / CSS
美国体育用品商店:Paragon Sports
2017/10/08 全球购物
微软瑞士官方网站:Microsoft瑞士
2018/04/20 全球购物
实习会计求职自荐信范文
2014/03/10 职场文书
员工试用期转正自我评价
2015/03/10 职场文书
超市员工辞职信范文
2015/05/12 职场文书
联谊会开场白
2015/06/01 职场文书
银行柜员工作心得体会
2016/01/23 职场文书
利用nginx搭建RTMP视频点播、直播、HLS服务器
2022/05/25 Servers