讲解有关于缓存的话题

上传人:xzh****18 文档编号:46748182 上传时间:2018-06-27 格式:PDF 页数:2 大小:650.66KB
返回 下载 相关 举报
讲解有关于缓存的话题_第1页
第1页 / 共2页
讲解有关于缓存的话题_第2页
第2页 / 共2页
亲,该文档总共2页,全部预览完了,如果喜欢就下载吧!
资源描述

《讲解有关于缓存的话题》由会员分享,可在线阅读,更多相关《讲解有关于缓存的话题(2页珍藏版)》请在金锄头文库上搜索。

1、关于缓存的话题 - 29/10/2013 by yagas 当前状况 有一个项目,大家都直接使用 Yii:app()-memcache-get 方法从缓存中获取数据。咋一看,好像没有什么不妥。但是随着项目的扩大,流程越来越复杂,缓存内容的增多,这个方法所带来的隐患就越发明显了。 每一次的改版或数据变动, 都需要查找一大片的代码进行修改(有可能还会有隐式的组装调用)。 哪怕漏掉了一个地方没有更正过来都会造成系统的BUG,甚至是找不到根源的未知错误。 面对以上问题,我说说我的改进方案。以下的改进方法仅代表我的个人看法,如果有更好的方法,欢迎大家一起讨论。 优化改进 计算机界有句老话,大意是:只要再

2、多添一层间接,计算机科学中就没有解决不了的问题(引用自Object-C 基础教程第 19 页) 。我的处理方法就是增加一层,避免下层及协作开发人员直接接触到数据。为避免缓存过多容易造成混乱,我们需要对缓存进行归类封装。以网店的缓存为例: class EShopCache private $_cacheKey = array(userName,shopTitle,isValPro,isValShop); private $_cache = array(); public function _get($key) if ( array_in($key, $this-_cacheKey) ) if (

3、 !array_key_exixts($key, $this-_cache) ) $this-_cache$key = Yii:app()-memcache-get($key); return $this-_cache$key; return false; 这样改进之后,不但使用方法更简单,而且更具语义化。 $eshopCache = new EShopCache; echo $ eshopCache -username; if ( $ eshopCache -isValShop = 1 ) echo 网店已经进行实体认证; 如果需求有变更需要对数据费进行修改, 我们只需要对这个类进行修改,

4、不需要对下一层的每一个接口进行修改,也不用担心忘了修改下层的封装及隐蔽调用。 持续改进 还有一个问题,如果需求再变化。网店要显示的是用户自定义的昵称(nickName),而不再是用户名(userName),难道我们只能翻遍文件修改了吗?改进方案如下: class EShopCache private $_cacheKey = array(userName,shopTitle,isValPro,isValShop); private $_aliaeses = array(userName=nickName); private $_cache = array(); public function

5、_get($key) if ( array_in($key, $this-_cacheKey) ) if ( !array_key_exixts($key, $this-_cache) ) $_key = array_key_exists($key, $this-_aliases)? $this-_aliases$key : $key; $this-_cache$key = Yii:app()-memcache-get($_key); return $this-_cache$key; return false; 到此,这个类的功能已经可以满足我们使用。我提供的方案就是使用设计模式中的“代理模式”来间接地访问缓存数据。如果有什么异议,欢迎大家发邮件到 共同讨论。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号