我正在考虑在应用程序的数据层中添加少量缓存。目标:
我有一些逻辑,深入10-15种方法。这些方法可能需要在每个步骤中从数据库访问集合。现在,我在method1的调用期间查询集合,并且在某些情况下最终将集合传递给5-6个深度调用,以避免再次查询它。
为了解决这个问题,我想我可以缓存查询的结果,而不是只是一次又一次地查询它,而不是再次查询它,知道我会立即收到相同的响应而无需进入数据库。此外,为了避免任何弃用的对象,我的缓存失效策略将在每个http请求结束后模仿传递在请求开始时查询的集合的行为时失效。
我正在使用SpringData
来访问数据库,并且正在考虑使用spring的缓存注释来缓存存储库结果数据。我检查了文档,它需要一个Cache实现才能工作(例如EHCache
或类似)。看看他们的失效策略,我似乎无法找到与基于请求的失效相关的任何内容。
有可能这样做吗?这是我的问题的一个很好的解决方案吗?请注意,我使用MongoDB
作为数据库。
答案 0 :(得分:0)
实际上您不需要缓存,因为缓存持续时间是请求时间。所以你只需要将结果放在请求范围bean http://docs.spring.io/spring/docs/3.0.0.M3/reference/html/ch04s04.html
中在将代码作为面向对象之后,将method1的集合放在bean的属性(请求范围的bean)中,并以其他方法访问它。如果在其他类中使用弹簧注射。