跳到主要内容
CNode

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

问答
Bbugall发布于 10 年前最后回复 10 年前
446860

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

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

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

查看回复

回复 (4)

B
bugall#410 年前

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

Y
yakczh#310 年前

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

H
htoooth#210 年前

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

H
huangyanxiong01#110 年前

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

参与回复

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