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和ACCESS写聊天室(三)
Oct 09 PHP
php中将数组存到文件里的实现代码
Jan 19 PHP
PHP测试程序运行时间的类
Feb 05 PHP
ThinkPHP写第一个模块应用
Feb 20 PHP
PHP 文本文章分页代码 按标记或长度(不涉及数据库)
Jun 07 PHP
PHP utf-8编码问题,utf8编码,数据库乱码,页面显示输出乱码
Apr 08 PHP
Thinkphp中volist标签mod控制一定记录的换行BUG解决方法
Nov 04 PHP
PHP PDOStatement对象bindpram()、bindvalue()和bindcolumn之间的区别
Nov 20 PHP
thinkphp实现上一篇与下一篇的方法
Dec 08 PHP
PHP实现的浏览器检查类
Apr 11 PHP
php 指定范围内多个随机数代码实例
Jul 18 PHP
laravel ajax curd 搜索登录判断功能的实现
Apr 17 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
剧场版动画《PSYCHO-PASS 3 FIRST INSPECTOR》3月27日日本上映!
2020/03/06 日漫
PHP - Html Transfer Code
2006/10/09 PHP
PHP 危险函数解释 分析
2009/04/22 PHP
关于Sphinx创建全文检索的索引介绍
2013/06/25 PHP
discuz图片顺序混乱解决方案
2015/07/29 PHP
表格单元格交错着色实现思路及代码
2013/04/01 Javascript
jQuery学习笔记之jQuery构建函数的7种方法
2014/06/03 Javascript
js获取本机操作系统类型的两种方法
2015/12/19 Javascript
再谈javascript常见错误及解决方法
2016/09/16 Javascript
javascript cookie用法基础教程(概念,设置,读取及删除)
2016/09/20 Javascript
详解微信小程序 通过控制CSS实现view隐藏与显示
2017/05/24 Javascript
AngularJS使用ng-repeat遍历二维数组元素的方法详解
2017/11/11 Javascript
详解Vue基于vue-quill-editor富文本编辑器使用心得
2019/01/03 Javascript
Vue表单之v-model绑定下拉列表功能
2019/05/14 Javascript
小程序调用微信支付的方法
2019/09/26 Javascript
小程序input数据双向绑定实现方法
2019/10/17 Javascript
JS实现audio音频剪裁剪切复制播放与上传(步骤详解)
2020/07/28 Javascript
vue data有值,但是页面{{}} 取不到值的解决
2020/11/09 Javascript
Python写的服务监控程序实例
2015/01/31 Python
Python实现基于权重的随机数2种方法
2015/04/28 Python
Python 私有函数的实例详解
2017/09/11 Python
在python中pandas的series合并方法
2018/11/12 Python
python接口自动化之ConfigParser配置文件的使用详解
2020/08/03 Python
印度和世界各地的精美产品:Ikka Dukka
2018/02/12 全球购物
关于打架的检讨书
2014/01/17 职场文书
校园安全教育广播稿
2014/02/17 职场文书
2014年乡镇植树节活动方案
2014/02/28 职场文书
合作意向协议书范本
2014/03/31 职场文书
工厂车间标语
2014/06/19 职场文书
群众路线教育实践活动个人对照检查材料
2014/09/22 职场文书
护士求职自荐信范文
2015/03/04 职场文书
2015年推广普通话演讲稿
2015/03/20 职场文书
2015年12.4全国法制宣传日活动总结
2015/03/24 职场文书
解读MySQL的客户端和服务端协议
2021/05/10 MySQL
mysql insert 存在即不插入语法说明
2022/03/25 MySQL
Python绘制散乱的点构成的图的方法
2022/04/21 Python