CNode

如何做到缓存层对业务层透明

问答
Bbugall发布于10 年前最后回复10 年前4 回复4674 浏览0 收藏

现在有个需求就是在存储层加一层缓存(有的业务已经有2层缓存)。 但是我又不想在业务逻辑里写

if( in cache ){
	//read from cache
}else{
	//read from db
}

这类逻辑。我更期望我业务层在取数据的时候不要关心这些数据是在缓存还是DB. 有现成的组件或是框架么? 希望有处理过这类问题经验的朋友不吝赐教

查看回复

回复 (4)

H
huangyanxiong01#1·10 年前

可以整合到ORM,ODM,看看文档说不定这些东西已经整合了

H
htoooth#2·10 年前

把你的存储层做成接口,然后,缓存层实现你的接口,你业务层也实现你的接口。设计一个门面也实现这个接口,不过这个实现,需要传入 缓存层和存储层。在业务代码中,使用这个类。实现这个类:思路先调缓存层的数据,如果没有就调存储层,然后把数据存在缓存层中。大体思路就是这样。

Y
yakczh#3·10 年前

store.cache(strategy).getdata( xxx);

B
bugall#4·10 年前

@huangyanxiong01 昨晚回家的路上我也有在想,跟你的想法很相似。写一个ORM的插件,每次ORM去执行之前把key去缓存找,如果没有告诉业务层,ORM接着按照正常逻辑走,等结果返回后,发一份给缓存服务,只需要拓展一下ORM的option让其控制一些缓存策略

参与回复
登录后即可参与回复。登录