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 相关文章推荐
How do I change MySQL timezone?
Mar 26 PHP
php heredoc和phpwind的模板技术使用方法小结
Mar 28 PHP
apache mysql php 源码编译使用方法
May 03 PHP
PHP中数组合并的两种方法及区别介绍
Sep 14 PHP
PDO版本问题 Invalid parameter number: no parameters were bound
Jan 06 PHP
PHP判断是否有Get参数的方法
May 05 PHP
叫你如何修改Nginx与PHP的文件上传大小限制
Sep 10 PHP
十个PHP高级应用技巧果断收藏
Sep 25 PHP
php简单截取字符串代码示例
Oct 19 PHP
Laravel程序架构设计思路之使用动作类
Jun 07 PHP
使用composer安装使用thinkphp6.0框架问题【视频教程】
Oct 01 PHP
PHP架构及原理知识点详解
Dec 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
Uchome1.2 1.5 代码学习 common.php
2009/04/24 PHP
解析coreseek for sphinx的使用
2013/06/21 PHP
php实现数组中索引关联数据转换成json对象的方法
2015/07/08 PHP
php多文件打包下载的实例代码
2017/07/12 PHP
PHP实现深度优先搜索算法(DFS,Depth First Search)详解
2017/09/16 PHP
PHP实现二维数组(或多维数组)转换成一维数组的常见方法总结
2019/12/04 PHP
如何实现textarea里的不同文本显示不同颜色
2014/01/20 Javascript
一个可以增加和删除行的table并可编辑表格中内容
2014/06/16 Javascript
javascript异步编程代码书写规范Promise学习笔记
2015/02/11 Javascript
由简入繁实现Jquery树状结构的方法(推荐)
2016/06/10 Javascript
bootstrap vue.js实现tab效果
2017/02/07 Javascript
Angular.js中定时器循环的3种方法总结
2017/04/27 Javascript
Vue组件通信之Bus的具体使用
2017/12/28 Javascript
JS运动特效之任意值添加运动的方法分析
2018/01/24 Javascript
Bootstrap popover 实现鼠标移入移除显示隐藏功能方法
2018/01/24 Javascript
jQuery实现的两种简单弹窗效果示例
2018/04/18 jQuery
jQuery实现的简单获取索引功能示例
2018/06/04 jQuery
vue中关闭eslint的方法分析
2018/08/04 Javascript
Vue 样式绑定的实现方法
2019/01/15 Javascript
layer弹出框确定前验证:弹出消息框的方法(弹出两个layer)
2019/09/21 Javascript
[52:40]完美世界DOTA2联赛PWL S2 Magma vs GXR 第一场 11.29
2020/12/02 DOTA
下载安装setuptool和pip linux安装pip    
2014/01/24 Python
python使用ctypes模块调用windowsapi获取系统版本示例
2014/04/17 Python
python实现马耳可夫链算法实例分析
2015/05/20 Python
Pandas:DataFrame对象的基础操作方法
2018/06/07 Python
python字符串和常用数据结构知识总结
2019/05/21 Python
在Qt中正确的设置窗体的背景图片的几种方法总结
2019/06/19 Python
使用turtle绘制五角星、分形树
2019/10/06 Python
Python随机数函数代码实例解析
2020/02/09 Python
Python3 利用face_recognition实现人脸识别的方法
2020/03/13 Python
在Python中字典按值排序的实现方法
2020/11/12 Python
伦敦剧院及景点门票:Encore Tickets
2018/07/01 全球购物
购买美国制造的相框和画框架:Picture Frames
2018/08/14 全球购物
超市理货员岗位职责
2014/07/04 职场文书
卫生院艾滋病宣传活动总结
2015/05/09 职场文书
2019大学生暑期实习心得总结
2019/08/21 职场文书