关于缓存的话题
当前状况
有一个项目,大家都直接使用Yii::app()->memcache->get方法从缓存中获取数据。咋一看,好像没有什么不妥。但是随着项目的扩大,流程越来越复杂,缓存内容的增多,这个方法所带来的隐患就越发明显了。每一次的改版或数据变动,都需要查找一大片的代码进行修改(有可能还会有隐式的组装调用)。哪怕漏掉了一个地方没有更正过来都会造成系统的BUG,甚至是找不到根源的未知错误。
面对以上问题,我说说我的改进方案。以下的改进方法仅代表我的个人看法,如果有更好的方法,欢迎大家一起讨论。
优化改进
计算机界有句老话,大意是:只要再多添一层间接,计算机科学中就没有解决不了的问题(引用自《Object-C基础教程》第19页)。我的处理方法就是增加一层,避免下层及协作开发人员直接接触到数据。为避免缓存过多容易造成混乱,我们需要对缓存进行归类封装。以网店的缓存为例:
[php]
class EShopCache{
private $_cacheKey = array(‘userName’,’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 false;
}
}
这样改进之后,不但使用方法更简单,而且更具语义化。
[php]
$eshopCache = new EShopCache;
echo $ eshopCache ->username;
if ( $ eshopCache ->isValShop == 1 ) {
echo ‘网店已经进行实体认证’;
}
如果需求有变更需要对数据费进行修改,我们只需要对这个类进行修改,不需要对下一层的每一个接口进行修改,也不用担心忘了修改下层的封装及隐蔽调用。
持续改进
还有一个问题,如果需求再变化。网店要显示的是用户自定义的昵称(nickName),而不再是用户名(userName),难道我们只能翻遍文件修改了吗?改进方案如下:
[php]
class EShopCache{
private $_cacheKey = array(‘userName’,’shopTitle’,’isValPro’,’isValShop’);
private $_aliaeses = array(‘userName’=>’nickName’);
private $_cache = array();
public function __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;
}
}
到此,这个类的功能已经可以满足我们使用。我提供的方案就是使用设计模式中的“代理模式”来间接地访问缓存数据。如果有什么异议,欢迎大家发邮件到yagas@sina.com 共同讨论。
报名学习加微信/QQ 1602007,关注《东方联盟网》微信公众号
>更多相关文章
- 02-25谷歌推行Tango 3D智能视效手机开发项目
- 12-22php $_server应用
- 12-22PHP 解决一次因压缩代码引发的死循环
- 12-22php jquery 多文件上传
- 12-22该如何使用thinkphp分表呢?
- 12-22thinkPHP模板的输出和模型的使用
首页推荐
佛山市东联科技有限公司一直秉承“一切以用户价值为依归
- 01-11全球最受赞誉公司揭晓:苹果连续九年第一
- 12-09罗伯特·莫里斯:让黑客真正变黑
- 12-09谁闯入了中国网络?揭秘美国绝密黑客小组TA
- 12-09警示:iOS6 惊现“闪退”BUG
- 04-08岚图汽车:一季度海外订单同比增长205%
- 04-08小米汽车回应大家关心的问题:事故车起火并
- 03-29黑客组织攻击纽约大学官网,泄露 300万学生
- 03-29阿里妈妈广告自研AI模型LMA升级至万亿级参数
- 03-29筑牢食品安全防线 构建放心消费环境
相关文章
24小时热门资讯
热门推荐
最新资讯
操作系统
黑客防御