繁体   English   中英

过程强度计算的“缓存”替代方案

[英]“Caching” Alternatives on Process Intense Calculations

背景:我已经对Spring的缓存做了一些研究,这似乎是一种节省常规读取操作时间的好方法。 我的代码当前在大量项目上有一个循环,我在其中执行逻辑以查看是否某些其他对象通过通用项目以某种方式连接。 思考此问题的方法类似于查看某个商品时显示的购物网站的相关商品。 我用来确定此值的值很复杂,但这是基本思想。

在加载项目页面时,加载时间非常长,试图计算并找出与其他项目相关的其他项目,以显示指向它们的链接。 我没有在每次加载项目页面时都计算此列表,而是开始使用其推荐项目列表来“缓存”项目。 系统中的许多事物都可能触发重新计算这些关系的需要:向项目添加/删除属性,添加/删除项目等。

问题:我的“缓存”只是一个单例对象,其中包含项及其相关对象的Map。 需要对缓存进行任何更改时,遍历系统中的每个项目的过程非常耗时且过程密集。 由于项目不断变化,Java高速缓存似乎不是正确的答案。 对于该设计,我还有其他设计模式可以忽略吗? 高速缓存似乎已经接近,但是我不确定这个问题是否适合高速缓存的模式,因为它比单个项目的读取量复杂得多。

缓存是解决这个问题的方法吗? 如果缓存不是正确的解决方案,那是什么?

缓存似乎不是解决您问题的方法,但是它们可能会帮助您找到解决方法。

例如,代替缓存创建的项目,另一种方法是缓存很少更改但对于创建列表至关重要的信息。

基于Spring函数的缓存(即@Cachable)对于缓存或失效可能会派上用场。

下一级别是研究不同类型的缓存(即redis )及其在算法,排序和发布/订阅方面的功能。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM