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+oracle 分页类
Oct 09 PHP
php中对2个数组相加的函数
Jun 24 PHP
使用淘宝IP库获取用户ip地理位置
Oct 27 PHP
php中函数前加&amp;符号的作用分解
Jul 08 PHP
PHP查询快递信息的方法
Mar 07 PHP
php编写批量生成不重复的卡号密码代码
May 14 PHP
10款PHP开源商城系统汇总介绍
Jul 23 PHP
ThinkPHP模型详解
Jul 27 PHP
详解PHP数组赋值方法
Nov 07 PHP
PHP使用Pear发送邮件(Windows环境)
Jan 05 PHP
Yii2实现自定义独立验证器的方法
May 05 PHP
PHP实现Snowflake生成分布式唯一ID的方法示例
Aug 30 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 方便水印和缩略图的图形类
2009/05/21 PHP
PHP仿博客园 个人博客(1) 数据库与界面设计
2013/07/05 PHP
PHP+MYSQL中文乱码问题
2015/07/01 PHP
JS 巧妙获取剪贴板数据 Excel数据的粘贴
2009/07/09 Javascript
js 获取浏览器高度和宽度值(多浏览器)
2009/09/02 Javascript
JavaScript学习笔记(十七)js 优化
2010/02/04 Javascript
Javascript面向对象之四 继承
2011/02/08 Javascript
js利用事件的阻止冒泡实现点击空白模态框的隐藏
2014/01/24 Javascript
JS上传图片预览插件制作(兼容到IE6)
2016/08/07 Javascript
浅谈js中test()函数在正则中的使用
2016/08/19 Javascript
RequireJS 依赖关系的实例(推荐)
2017/01/21 Javascript
JS复制对应id的内容到粘贴板(Ctrl+C效果)
2017/01/23 Javascript
react.js 获取真实的DOM节点实例(必看)
2017/04/17 Javascript
vue+springboot前后端分离实现单点登录跨域问题解决方法
2018/01/30 Javascript
JS使用正则表达式获取小括号、中括号及花括号内容的方法示例
2018/06/01 Javascript
opencv 识别微信登录验证滑动块位置
2018/08/07 Javascript
Vue中的$set的使用实例代码
2018/10/08 Javascript
微信小程序实现带参数的分享功能(两种方法)
2019/05/17 Javascript
微信小程序版本自动更新的方法
2019/06/14 Javascript
[53:13]2014 DOTA2国际邀请赛中国区预选赛5.21 DT VS LGD-GAMING
2014/05/22 DOTA
[02:08:58]2014 DOTA2国际邀请赛中国区预选赛 Ne VS CIS
2014/05/22 DOTA
python+django快速实现文件上传
2016/10/24 Python
解决Python网页爬虫之中文乱码问题
2018/05/11 Python
如何通过Python实现标签云算法
2019/07/02 Python
使用python编写一个语音朗读闹钟功能的示例代码
2020/07/14 Python
详解Python中@staticmethod和@classmethod区别及使用示例代码
2020/12/14 Python
利用CSS3参考手册和CSS3代码生成工具加速来学习网页制
2012/07/11 HTML / CSS
利用CSS3实现平移动画效果示例代码
2016/10/12 HTML / CSS
Lulu Guinness露露·吉尼斯官网:红唇包
2019/02/03 全球购物
防汛工作情况汇报
2014/10/28 职场文书
2015年出纳个人工作总结
2015/04/02 职场文书
2015年学校办公室工作总结
2015/05/26 职场文书
幼儿园2016年感恩节活动总结
2016/04/01 职场文书
学习师德师风的心得体会(2篇)
2019/10/08 职场文书
奇妙的 CSS shapes(CSS图形)
2021/04/05 HTML / CSS
原生Js 实现的简单无缝滚动轮播图的示例代码
2021/05/10 Javascript