谁负责处理数据缓存和内存存储的逻辑?

4
在Web服务中,当我们将数据持有的责任放到存储库时,是否也应该将缓存的责任放在它们身上?还是由其他部分负责?
同时,当我们使用内存存储作为辅助时,比如计算每天帖子访问次数并最终保存在数据库中的情况,这个功能应该在存储库中处理吗?
1个回答

3
我认为装饰者模式很适合用于缓存仓库。主要思想是将缓存和存储逻辑分离。因此,它符合单一职责原则。

enter image description here

关于统计助手,它取决于上下文。它可以是:
- 也可以是“装饰器”,将请求通过自身传递,并实现“IRepository”接口: `repo = new StatHelper(new CacheRepo(new DbRepo))`
- 单独的层,具有自己的接口并将“IRepository”作为依赖项。 - 可以在“CacheRepository”内实现逻辑,以避免膨胀类的数量。

还有一些逻辑需要处理。 有时我们需要同时使用CacheR和DBR。 特别是当我们将内存存储用作辅助工具而不是简单的缓存时。问题是,谁负责处理这个逻辑? - Amin Shojaei
我认为CacheRepository可以根据决定的缓存策略处理逻辑。有多种替代方案可以读取/写入缓存数据,例如read-through、write-through、write-around、write-behind和cache-aside。 - iluwatar
修改后的答案 - alex_noname

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接