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 相关文章推荐
session 的生命周期是多长
Oct 09 PHP
汉字转化为拼音(php版)
Oct 09 PHP
PHP管理内存函数 memory_get_usage()使用介绍
Sep 23 PHP
解析PHP正则提取或替换img标记属性
Jun 26 PHP
基于preg_match_all采集后数据处理的一点心得笔记(编码转换和正则匹配)
Jan 31 PHP
PHP goto语句简介和使用实例
Mar 11 PHP
php字符串过滤与替换小结
Jan 26 PHP
php实现网站顶踩功能的完整前端代码
Jul 19 PHP
yii,CI,yaf框架+smarty模板使用方法
Dec 29 PHP
php技巧小结【推荐】
Jan 19 PHP
PHP编程获取图片的主色调的方法【基于Imagick扩展】
Aug 02 PHP
PHP常用函数之base64图片上传功能详解
Oct 21 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
无线电广播的开始
2002/01/30 无线电
yii2 页面底部加载css和js的技巧
2016/04/21 PHP
Laravel框架使用技巧之使用url()全局函数返回前一个页面的地址方法详解
2020/04/06 PHP
IE不出现Flash激活框的小发现的js实现方法
2007/09/07 Javascript
javascript 文档的编码问题解决
2009/03/01 Javascript
JS小功能(button选择颜色)简单实例
2013/11/29 Javascript
jQuery实现的背景颜色渐变动画效果示例
2017/03/24 jQuery
详解vue-cli构建项目反向代理配置
2017/09/07 Javascript
js判断数组是否包含某个字符串变量的实例
2017/11/24 Javascript
基于 D3.js 绘制动态进度条的实例详解
2018/02/26 Javascript
[54:30]Liquid vs Newbee 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
通过python下载FTP上的文件夹的实现代码
2013/02/10 Python
python机器学习案例教程——K最近邻算法的实现
2017/12/28 Python
python获取当前目录路径和上级路径的实例
2018/04/26 Python
Django处理Ajax发送的Get请求代码详解
2019/07/29 Python
python+Django+pycharm+mysql 搭建首个web项目详解
2019/11/29 Python
Pytorch 实现冻结指定卷积层的参数
2020/01/06 Python
python ubplot使用方法解析
2020/01/10 Python
如何通过Django使用本地css/js文件
2020/01/20 Python
python实现图像全景拼接
2020/03/27 Python
Python实现弹球小游戏
2020/08/01 Python
基于OpenCV的路面质量检测的实现
2020/11/04 Python
python 利用openpyxl读取Excel表格中指定的行或列教程
2021/02/06 Python
HTML5 video标签(播放器)学习笔记(二):播放控制
2015/04/24 HTML / CSS
用HTML5制作烟火效果的教程
2015/05/12 HTML / CSS
HomeAway的巴西品牌:Alugue Temporada
2018/04/10 全球购物
DOM和JQuery对象有什么区别
2016/11/11 面试题
介绍一下你对SOA的认识
2016/04/24 面试题
写给妈妈的道歉信
2014/01/11 职场文书
体育专业学生自我评价范文
2014/01/17 职场文书
成龙霸王洗发水广告词
2014/03/14 职场文书
出纳工作检讨书
2014/10/18 职场文书
学校机关党总支领导班子整改工作方案
2014/10/26 职场文书
2019年入党思想汇报格式与要求
2019/06/25 职场文书
mysql自增长id用完了该怎么办
2022/02/12 MySQL
使用Django框架创建项目
2022/06/10 Python