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 相关文章推荐
一个高ai的分页函数和一个url函数
Oct 09 PHP
php中判断一个字符串包含另一个字符串的方法
Mar 19 PHP
Ajax PHP简单入门教程代码
Apr 25 PHP
php expects parameter 1 to be resource, array given 错误
Mar 23 PHP
php 错误处理经验分享
Oct 11 PHP
基于PHPExcel的常用方法总结
Jun 13 PHP
分割GBK中文遭遇乱码的解决方法
Aug 09 PHP
Thinkphp整合微信支付功能
Dec 14 PHP
PHP编程求最大公约数与最小公倍数的方法示例
May 29 PHP
php使用pecl方式安装扩展操作示例
Aug 12 PHP
Laravel 添加多语言提示信息的方法
Sep 29 PHP
详解PHP Swoole与TCP三次握手
May 27 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 文件夹删除、php清除缓存程序
2009/08/25 PHP
php array_pop()数组函数将数组最后一个单元弹出(出栈)
2011/07/12 PHP
作为程序员必知的16个最佳PHP库
2015/12/09 PHP
Linux下快速搭建php开发环境
2017/03/13 PHP
extJs 常用到的增,删,改,查操作代码
2009/12/28 Javascript
js判断数据类型如判断是否为数组是否为字符串等等
2014/01/15 Javascript
一个字符串反转函数可实现字符串倒序
2014/09/15 Javascript
node.js中的http.get方法使用说明
2014/12/14 Javascript
利用Angularjs和bootstrap实现购物车功能
2016/08/31 Javascript
jQuery属性选择器用法示例
2016/09/09 Javascript
轻松实现js弹框显示选项
2016/09/13 Javascript
touch.js 拖动、缩放、旋转 (鼠标手势)功能代码
2017/02/04 Javascript
BootStrap表单控件之文本域textarea
2017/05/23 Javascript
基于JavaScript实现微信抢红包功能
2017/07/20 Javascript
BootstrapValidator实现表单验证功能
2019/11/08 Javascript
javascrpt密码强度校验函数详解
2020/03/18 Javascript
使用element-ui +Vue 解决 table 里包含表单验证的问题
2020/07/17 Javascript
Angular+ionic实现折叠展开效果的示例代码
2020/07/29 Javascript
[10:34]DOTA2上海特级锦标赛全纪录
2016/03/25 DOTA
[01:06]DOTA2小知识课堂 Ep.01 TP出门不要忘记帮队友灌瓶哦
2019/12/05 DOTA
Django中create和save方法的不同
2019/08/13 Python
Python如何实现在字符串里嵌入双引号或者单引号
2020/03/02 Python
使用Python对Dicom文件进行读取与写入的实现
2020/04/20 Python
法国包包和行李箱销售网站:Bagage24.fr
2020/03/24 全球购物
飞利信loadrunner和软件测试笔试题
2012/09/22 面试题
大学生职业生涯规划书前言
2014/01/09 职场文书
2014物价局群众路线对照检查材料思想汇报
2014/09/21 职场文书
2015关于重阳节的演讲稿
2015/03/20 职场文书
2015年教师见习期工作总结
2015/05/20 职场文书
宣传委员竞选稿
2015/11/19 职场文书
Mysql 如何实现多张无关联表查询数据并分页
2021/06/05 MySQL
CSS Transition通过改变Height实现展开收起元素
2021/08/07 HTML / CSS
一文搞清楚MySQL count(*)、count(1)、count(col)区别
2022/03/03 MySQL
【海涛dota解说】海涛小满开黑4v5被破两路翻盘潮汐第一视角解说
2022/04/01 DOTA
springboot创建的web项目整合Quartz框架的项目实践
2022/06/21 Java/Android
JavaScript实现九宫格拖拽效果
2022/06/28 Javascript