PHP内存缓存Memcached类实例


Posted in PHP onDecember 08, 2014

本文实例讲述了PHP内存缓存Memcached类。分享给大家供大家参考。

具体实现方法如下:

<?PHP 

class MemcacheModel { 

private $mc = null; 

/** 

* 构造方法,用于添加服务器并创建memcahced对象 

*/ 

function __construct(){ 

$params = func_get_args(); 

$mc = new Memcache; 

//如果有多个memcache服务器 

if( count($params) > 1){ 

foreach ($params as $v){ 

call_user_func_array(array($mc, 'addServer'), $v); 

} 

//如果只有一个memcache服务器 

} else { 

call_user_func_array(array($mc, 'addServer'), $params[0]); 

}

$this->mc=$mc; 

} 

/** 

* 获取memcached对象 

* @return object memcached对象 

*/ 

function getMem(){ 

return $this->mc; 

} 

/** 

* 检查mem是否连接成功 

* @return bool 连接成功返回true,否则返回false 

*/ 

function mem_connect_error(){ 

$stats=$this->mc->getStats(); 

if(emptyempty($stats)){ 

return false; 

}else{ 

return true; 

} 

} 

 

private function addKey($tabName, $key){ 

$keys=$this->mc->get($tabName); 

if(emptyempty($keys)){ 

$keys=array(); 

} 

//如果key不存在,就添加一个 

if(!in_array($key, $keys)) { 

$keys[]=$key;  //将新的key添加到本表的keys中 

$this->mc->set($tabName, $keys, MEMCACHE_COMPRESSED, 0); 

return true;   //不存在返回true 

}else{ 

return false;  //存在返回false 

} 

} 

/** 

* 向memcache中添加数据 

* @param string $tabName 需要缓存数据表的表名 

* @param string $sql 使用sql作为memcache的key 

* @param mixed $data 需要缓存的数据 

*/ 

function addCache($tabName, $sql, $data){ 

$key=md5($sql); 

//如果不存在 

if($this->addKey($tabName, $key)){ 

$this->mc->set($key, $data, MEMCACHE_COMPRESSED, 0); 

} 

} 

/** 

* 获取memcahce中保存的数据 

* @param string $sql 使用SQL的key 

* @return mixed 返回缓存中的数据 

*/ 

function getCache($sql){ 

$key=md5($sql); 

return $this->mc->get($key); 

} 

 

/** 

* 删除和同一个表相关的所有缓存 

* @param string $tabName 数据表的表名 

*/  

function delCache($tabName){ 

$keys=$this->mc->get($tabName); 

//删除同一个表的所有缓存 

if(!emptyempty($keys)){ 

foreach($keys as $key){ 

$this->mc->delete($key, 0); //0 表示立刻删除 

} 

} 

//删除表的所有sql的key 

$this->mc->delete($tabName, 0);  

} 

/** 

* 删除单独一个语句的缓存 

* @param string $sql 执行的SQL语句 

*/ 

function delone($sql){ 

$key=md5($sql); 

$this->mc->delete($key, 0); //0 表示立刻删除 

} 

} 

?>

希望本文所述对大家的PHP程序设计有所帮助。

PHP 相关文章推荐
第1次亲密接触PHP5(1)
Oct 09 PHP
PHP简介
Oct 09 PHP
php的数组与字符串的转换函数整理汇总
Jul 18 PHP
ThinkPHP使用心得分享-ThinkPHP + Ajax 实现2级联动下拉菜单
May 15 PHP
Eclipse的PHP插件PHPEclipse安装和使用
Jul 20 PHP
PHP使用递归生成文章树
Apr 21 PHP
PHP YII框架开发小技巧之模型(models)中rules自定义验证规则
Nov 16 PHP
redirect_uri参数错误的解决方法(必看)
Feb 16 PHP
PHP下 Mongodb 连接远程数据库的实例代码
Aug 30 PHP
PHP日志LOG类定义与用法示例
Sep 06 PHP
PHP PDOStatement::nextRowset讲解
Feb 01 PHP
PHP面向对象程序设计之对象的遍历操作示例
Jun 12 PHP
thinkphp实现上一篇与下一篇的方法
Dec 08 #PHP
PHP模块memcached使用指南
Dec 08 #PHP
PHP原生函数一定好吗?
Dec 08 #PHP
thinkphp中ajax与php响应过程详解
Dec 08 #PHP
一款简单实用的php操作mysql数据库类
Dec 08 #PHP
php表单敏感字符过滤类
Dec 08 #PHP
php网页病毒清除类
Dec 08 #PHP
You might like
最省空间的计数器
2006/10/09 PHP
支持中文的php加密解密类代码
2011/11/27 PHP
php中取得文件的后缀名?
2012/02/20 PHP
php异步多线程swoole用法实例
2014/11/14 PHP
Mootools 1.2教程 Fx.Morph、Fx选项和Fx事件
2009/09/15 Javascript
《JavaScript高级程序设计》阅读笔记(一) ECMAScript基础
2012/02/27 Javascript
web的各种前端打印方法之jquery打印插件jqprint实现网页打印
2013/01/09 Javascript
JavaScript 和 Java 的区别浅析
2013/07/31 Javascript
node.js中的url.parse方法使用说明
2014/12/10 Javascript
JS获得选取checkbox整行数据的方法
2015/01/28 Javascript
JavaScript使用位运算符判断奇数和偶数的方法
2015/06/01 Javascript
基于JavaScript怎么实现让歌词滚动播放
2015/11/03 Javascript
JavaScript数据存储 Cookie篇
2016/07/02 Javascript
BootStrap整体框架之基础布局组件
2016/12/15 Javascript
在 Angular 中实现搜索关键字高亮示例
2017/03/21 Javascript
基于JavaScript定位当前的地理位置
2017/04/11 Javascript
js 用于检测类数组对象的函数方法
2017/05/02 Javascript
详解plotly.js 绘图库入门使用教程
2018/02/23 Javascript
Vue全局分页组件的实现代码
2018/08/10 Javascript
Vue在页面数据渲染完成之后的调用方法
2018/09/11 Javascript
使用flow来规范javascript的变量类型
2019/09/12 Javascript
Js利用正则表达式去除字符串的中括号
2020/11/23 Javascript
详解Vite的新体验
2021/02/22 Javascript
python计算牛顿迭代多项式实例分析
2015/05/07 Python
Python Django使用forms来实现评论功能
2016/08/17 Python
Python随机函数random()使用方法小结
2018/04/29 Python
一看就懂得Python的math模块
2018/10/21 Python
Python3 执行Linux Bash命令的方法
2019/07/12 Python
python超时重新请求解决方案
2019/10/21 Python
python对指定字符串逆序的6种方法(小结)
2020/04/02 Python
python 实现两个线程交替执行
2020/05/02 Python
PyQt5 控件字体样式等设置的实现
2020/05/13 Python
乌克兰香水和化妆品网站:Notino.ua
2018/03/26 全球购物
会计电算化专业个人的自我评价
2013/11/24 职场文书
某某店铺的开业庆典主持词范本
2019/11/25 职场文书
完美处理python与anaconda环境变量的冲突问题
2021/04/07 Python