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 相关文章推荐
生成ubuntu自动切换壁纸xml文件的php代码
Jul 17 PHP
深入理解PHP之数组(遍历顺序)  Laruence原创
Jun 13 PHP
php中数组首字符过滤功能代码
Jul 31 PHP
PHP5函数小全(分享)
Jun 06 PHP
安装ImageMagick出现error while loading shared libraries的解决方法
Sep 23 PHP
PHP文件操作方法汇总
Jul 01 PHP
TP3.2批量上传文件或图片 同名冲突问题的解决方法
Aug 01 PHP
Laravel中错误与异常处理的用法示例
Sep 16 PHP
PHP面向对象程序设计之对象的遍历操作示例
Jun 12 PHP
PHP面向对象程序设计模拟一般面向对象语言中的方法重载(overload)示例
Jun 13 PHP
php写入文件不覆盖的实例讲解
Sep 17 PHP
phpquery中文手册
Mar 18 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
php中的时间处理
2006/10/09 PHP
PHP Echo字符串的连接格式
2016/03/07 PHP
php实时倒计时功能实现方法详解
2017/02/27 PHP
Yii2中简单的场景使用介绍
2017/06/02 PHP
Laravel框架使用monolog_mysql实现将系统日志信息保存到mysql数据库的方法
2018/08/16 PHP
分享精心挑选的23款美轮美奂的jQuery 图片特效插件
2012/08/14 Javascript
JavaScript中的null和undefined区别介绍
2015/01/01 Javascript
30分钟快速掌握Bootstrap框架
2016/05/24 Javascript
通过BootStrap实现轮播图的实际应用
2016/09/26 Javascript
KnockoutJS 3.X API 第四章之事件event绑定
2016/10/10 Javascript
Centos7 中安装 Node.js v4.4.4
2016/11/03 Javascript
JavaScript之RegExp_动力节点Java学院整理
2017/06/29 Javascript
完美实现js拖拽效果 return false用法详解
2017/07/28 Javascript
Vue通过URL传参如何控制全局console.log的开关详解
2017/12/07 Javascript
vue对storejs获取的数据进行处理时遇到的几种问题小结
2018/03/20 Javascript
Vue 菜单栏点击切换单个class(高亮)的方法
2018/08/22 Javascript
webpack4 CSS Tree Shaking的使用
2018/09/03 Javascript
详解使用jest对vue项目进行单元测试
2018/09/07 Javascript
js canvas实现橡皮擦效果
2018/12/20 Javascript
Vuex中的State使用介绍
2019/01/19 Javascript
浅谈JSON5解决了JSON的两大痛点
2020/12/14 Javascript
Python实现Const详解
2015/01/27 Python
Python 基础知识之字符串处理
2017/01/06 Python
高质量Python代码编写的5个优化技巧
2017/11/16 Python
Python 网络爬虫--关于简单的模拟登录实例讲解
2018/06/01 Python
详解Python网络框架Django和Scrapy安装指南
2019/04/01 Python
屈臣氏俄罗斯在线商店:Watsons俄罗斯
2020/08/03 全球购物
C#里面如何倒序排列一个数组的元素?
2013/06/21 面试题
社区优秀志愿者材料
2014/02/02 职场文书
法律专业学生的自我评价
2014/02/07 职场文书
学生不讲诚信检讨书
2014/09/29 职场文书
北京故宫的导游词
2015/01/31 职场文书
2016学习雷锋精神活动倡议书
2015/04/27 职场文书
2015团员个人年度总结
2015/11/24 职场文书
2016年九九重阳节活动总结
2016/04/01 职场文书
2019年度开业庆典祝福语大全!
2019/07/05 职场文书