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 相关文章推荐
最令PHP初学者头痛的十四个问题
Jul 12 PHP
php学习之 数组声明
Jun 09 PHP
解析dedeCMS验证码的实现代码
Jun 07 PHP
PHP设计模式之责任链模式的深入解析
Jun 13 PHP
PHP命名空间(namespace)的动态访问及使用技巧
Aug 18 PHP
十幅图告诉你什么是PHP引用
Feb 22 PHP
PHP里的单例类写法实例
Jun 25 PHP
PHP的数组中提高元素查找与元素去重的效率的技巧解析
Mar 03 PHP
centos下file_put_contents()无法写入文件的原因及解决方法
Apr 01 PHP
ThinkPHP 在阿里云上的nginx.config配置实例详解
Oct 11 PHP
yii2.0框架使用 beforeAction 防非法登陆的方法分析
Sep 11 PHP
使用tp框架和SQL语句查询数据表中的某字段包含某值
Oct 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+MySQL的聊天室设计
2006/10/09 PHP
PHP开发框架总结收藏
2008/04/24 PHP
利用phpexcel把excel导入数据库和数据库导出excel实现
2014/01/09 PHP
PHP实现使用优酷土豆视频地址获取swf播放器分享地址
2014/06/05 PHP
CI框架中集成CKEditor编辑器的教程
2014/06/09 PHP
PHP内置的Math函数效率测试
2014/12/01 PHP
PHP判断访客是否手机端(移动端浏览器)访问的方法总结【4种方法】
2019/03/27 PHP
通过js简单实现将一个文本内容转译成加密文本
2013/10/22 Javascript
jQuery遍历之next()、nextAll()方法使用实例
2014/11/08 Javascript
轻松创建nodejs服务器(7):阻塞操作的实现
2014/12/18 NodeJs
js拆分字符串并将分割的数据放到数组中的方法
2015/05/06 Javascript
jQuery实现定时读取分析xml文件的方法
2015/07/16 Javascript
js日期插件dateHelp获取本月、三个月、今年的日期
2016/03/07 Javascript
一种Javascript解释ajax返回的json的好方法(推荐)
2016/06/02 Javascript
js前端解决跨域问题的8种方案(最新最全)
2016/11/18 Javascript
浅谈angularjs中响应回车事件
2017/04/24 Javascript
JavaScript编程设计模式之观察者模式(Observer Pattern)实例详解
2017/10/25 Javascript
react router4+redux实现路由权限控制的方法
2018/05/03 Javascript
vue2.0实现音乐/视频播放进度条组件
2018/06/06 Javascript
微信自定义分享链接信息(标题,图片和内容)实现过程详解
2019/09/04 Javascript
JS如何实现网站中PC端和手机端自动识别并跳转对应的代码
2020/01/08 Javascript
基于JavaScript获取url参数2种方法
2020/04/17 Javascript
[59:15]完美世界DOTA2联赛PWL S2 LBZS vs FTD.C 第一场 11.20
2020/11/20 DOTA
Python最基本的数据类型以及对元组的介绍
2015/04/14 Python
Python全局变量与局部变量区别及用法分析
2018/09/03 Python
如何在Python对Excel进行读取
2020/06/04 Python
浅谈keras中的batch_dot,dot方法和TensorFlow的matmul
2020/06/18 Python
Scrapy基于scrapy_redis实现分布式爬虫部署的示例
2020/09/29 Python
python+requests实现接口测试的完整步骤
2020/10/27 Python
加拿大著名时装品牌:SOIA & KYO
2016/08/23 全球购物
幼儿如何来做好自我评价
2013/11/05 职场文书
班会关于环保演讲稿
2013/12/29 职场文书
组织鉴定材料
2014/06/02 职场文书
高考标语大全
2014/06/05 职场文书
入党介绍人意见2015
2015/06/01 职场文书
在Oracle表中进行关键词搜索的过程
2022/06/10 Oracle