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

时间:2017-02-14 14:56:51

标签: java spring caching

背景:我已经在Spring中进行了一些调查,这似乎是节省常见读取操作时间的好方法。我的代码目前在大量项目上有一个循环,我在这里执行逻辑以查看某些其他对象是否以某种方式连接到公共项目。考虑这一点的方法类似于当您查看某个项目时显示的购物网站相关项目。我用来确定这个值很复杂,但这是基本的想法。

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

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

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

1 个答案:

答案 0 :(得分:0)

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

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

基于Spring函数的缓存(即@Cachable)可能会派上用场,无论是缓存还是失效。

下一级是检查不同类型的缓存(即redis)以及它们在算法,排序和Pub / Sub方面提供的内容。