首页 > 作文

关于缓存的话题

更新时间:2023-04-07 05:39:35 阅读: 评论:0

当前状况

有一个项目,大家都直接使用yii::app()->memcache->get方法从缓存中获取数据。咋一看,好像没有什么不妥。但是随着项目的扩大,流程越来越复杂,缓存内容的增多,这个方法所带来的隐患就越发明显了。每一次的改版或数据变动,都需要查找一大片的代码进行修改(有可能还会有隐式的组装调用)。哪怕漏掉了一个地方没有更正过来都会造成的bug,甚至是找不到根源的未知错误。

面对以上问题,我说说我的改进方案。以下的改进方法仅代表我的个人看法,如果有更好的方法,欢迎大家一起讨论。

优化改进

计算机界有句老话,大意是:只要再多添一层间接,计算机科学中就没有解决不七夕促销海报了的问题(引用自《object-c基础教程》第19页)。我的处理方法就是增加一层,避免下层及协作开发人员直接接触到数据。为避免缓存过多容易造成混乱,我们需要对缓存进行归类封装。以网店的缓存为例:

[php]

class eshopcache{

private $_cachekey = array(‘urname’,’shoptitle’,’isvalpro’,’isvalshop’);

private $_cache = array();

public function __get($key) {

if ( array_in($key, $this->_cachekey) ){

if ( !array_key_exixts($key, $this->_cache) ) {

$this->_cache[$key] = yii::app()->memcache->get($key);

}

return $this->_cache[$key];

}

return fal;

}

}

这样改进之后,不但使用方法更简单,而且更具语义化。

[php]

$eshopcache = new eshopcache;

echo $ eshopcache ->urname;

if ( $ eshopcache ->isvalshop == 1 ) {

echo ‘网店已经进行实体认证’;

}

编辑图片大小

如果需求有变更需要对数据费进行修改,我们只需要对这个类进行修改,不需要对下一层的每一个接口进行修改,也不用担心忘了修改下层的封装及隐蔽调用。

持续改进

还有一个问题,如果需求再变化。网店要显示的是用户自定义的昵称(ni体育考试ckname),而不再是用户名(urname),难道我们只能翻遍文件修改了吗?改进方案如下:

[php]

class eshopcache{

private $_cachekey = array(‘urname’,’shoptitle’,’isvalpro’,’isvalshop’);

private $_aliaes = array(‘urname’=>’nickname’);

private $_cache = array();

public function __get($key) {

if ( array_in($key, $this->_cach春季运动会稿件ekey) ){

if ( !array_key_exixts($key, $this->_cache) ) {

$_key = array_key_exists($key, $this->_al莎士比亚的作品ias)? $this->_alias[$key] : $key;

$this->_cache[$key] = yii::app()->memcache->get($_key);

}

return $this->_cache[$key];

}

return fal;

}

}

到此,这个类的功能已经可以满足我们使用。我提供的方案就是使用设计模式中的“代理模式”来间接地访问缓存数据。如果有什么异议,欢迎大家发邮件到yagas@sina.com 共同讨论。

本文发布于:2023-04-07 05:39:34,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/6702902d34039b479cb279286fec14d5.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:关于缓存的话题.doc

本文 PDF 下载地址:关于缓存的话题.pdf

标签:缓存   方法   数据   网店
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图