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无限分类的类
Jan 02 PHP
PHP开发中常用的8个小技巧
Aug 27 PHP
Could not load type System.ServiceModel.Activation.HttpModule解决办法
Dec 29 PHP
基于php在各种web服务器的运行模式详解
Jun 03 PHP
php常用Stream函数集介绍
Jun 24 PHP
分享8个最佳的代码片段在线测试网站
Jun 29 PHP
PHP中time(),date(),mktime()区别介绍
Sep 28 PHP
php输出金字塔的2种实现方法
Dec 16 PHP
php验证码生成代码
Nov 11 PHP
php版微信自动登录并获取昵称的方法
Sep 23 PHP
PHP使用标准库spl实现的观察者模式示例
Aug 04 PHP
PHP实现给定一列字符,生成指定长度的所有可能组合示例
Jun 22 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中根据变量的类型 选择echo或dump
2012/07/05 PHP
关于js与php互相传值的介绍
2013/06/25 PHP
php利用单例模式实现日志处理类库
2014/02/10 PHP
PHP实现发送邮件的方法(基于简单邮件发送类)
2015/12/17 PHP
Thinkphp结合ajaxFileUpload实现异步图片传输示例
2017/03/13 PHP
PHP __call()方法实现委托示例
2019/05/20 PHP
三种动态加载js的jquery实例代码另附去除js方法
2014/04/30 Javascript
让人蛋疼的JavaScript语法特性
2014/09/30 Javascript
javascript定义变量时带var与不带var的区别分析
2015/01/12 Javascript
原生js和jquery实现图片轮播特效
2015/04/23 Javascript
jQuery插件pagewalkthrough实现引导页效果
2015/07/05 Javascript
Javascript生成全局唯一标识符(GUID,UUID)的方法
2016/02/27 Javascript
Angular 理解module和injector,即依赖注入
2016/09/07 Javascript
微信小程序 Audio API详解及实例代码
2016/09/30 Javascript
Angular2 路由问题修复详解
2017/03/01 Javascript
js前端实现图片懒加载(lazyload)的两种方式
2017/04/24 Javascript
angular过滤器实现排序功能
2017/06/27 Javascript
jquery插件canvaspercent.js实现百分比圆饼效果
2017/07/18 jQuery
AngularJS使用ui-route实现多层嵌套路由的示例
2018/01/10 Javascript
jQuery实现的手动拖动控制进度条效果示例【测试可用】
2018/04/18 jQuery
vue用递归组件写树形控件的实例代码
2018/07/19 Javascript
关于Vue项目跨平台运行问题的解决方法
2018/09/18 Javascript
keep-Alive搭配vue-router实现缓存页面效果的示例代码
2020/06/24 Javascript
基于scrapy实现的简单蜘蛛采集程序
2015/04/17 Python
python散点图实例之随机漫步
2018/08/27 Python
python爬虫刷访问量 2019 7月
2019/08/01 Python
Python基础之变量基本用法与进阶详解
2020/01/03 Python
使用Tensorboard工具查看Loss损失率
2020/02/15 Python
法国购买隐形眼镜和眼镜网站:Optical Center
2019/10/08 全球购物
为什么Runtime.exec(“ls”)没有任何输出?
2014/10/03 面试题
刚毕业大学生自荐信范文
2014/02/20 职场文书
公益广告语集锦
2014/03/13 职场文书
食品业务员岗位职责
2014/03/18 职场文书
廉洁自律证明
2015/06/24 职场文书
2016年公司“3.12”植树节活动总结
2016/03/16 职场文书
开学季:喜迎新生,迎新标语少不了
2019/11/07 职场文书