如何做到缓存层对业务层透明
现在有个需求就是在存储层加一层缓存(有的业务已经有2层缓存)。 但是我又不想在业务逻辑里写
if( in cache ){
//read from cache
}else{
//read from db
}
这类逻辑。我更期望我业务层在取数据的时候不要关心这些数据是在缓存还是DB. 有现成的组件或是框架么? 希望有处理过这类问题经验的朋友不吝赐教
4 回复
可以整合到ORM,ODM,看看文档说不定这些东西已经整合了
把你的存储层做成接口,然后,缓存层实现你的接口,你业务层也实现你的接口。设计一个门面也实现这个接口,不过这个实现,需要传入 缓存层和存储层。在业务代码中,使用这个类。实现这个类:思路先调缓存层的数据,如果没有就调存储层,然后把数据存在缓存层中。大体思路就是这样。
store.cache(strategy).getdata( xxx);
@huangyanxiong01 昨晚回家的路上我也有在想,跟你的想法很相似。写一个ORM的插件,每次ORM去执行之前把key去缓存找,如果没有告诉业务层,ORM接着按照正常逻辑走,等结果返回后,发一份给缓存服务,只需要拓展一下ORM的option让其控制一些缓存策略