我是构建Java Web应用程序的团队的一员,用户将在关系数据库中搜索结果,然后在浏览器中以表格形式查看它们。然后,用户还可以选择在单独的浏览器窗口中查看相同的结果集(或这些结果的子集),例如使用图表工具。换句话说,我们需要让用户能够在以后可视化相同的结果集记录(最多24小时)。
由于对系统的搜索将是资源密集型且仅仅是出于良好的常识,我们希望以一种干净的方式来缓存每个结果集,以便稍后可以从内存(RAM或磁盘)中提取它。 我们正在寻找一种很好的方法来实现这种缓存,我们相信其他人之前已经这样做了,我们更喜欢使用最佳实践或框架,而不是从头开始构建这样的东西。服务器将有足够的RAM,但由于可能有数百人使用该系统,我们可能需要一种先存储到RAM的方法,但如果RAM已满,也可以缓存到硬盘。
我认为坚持Java对象是最有意义的,但我愿意接受更好的建议。我们希望采用与供应商无关的方法,因此如果数据库团队选择稍后切换供应商,我们就不会使用专有解决方案。感谢。
答案 0 :(得分:4)
我认为你可能正在寻找的是Terracotta Ehcache。这会做你提到的一切以及更多。它是一个免费的产品,可用于缓存内存中的内容,溢出到磁盘,指定MB或项目的最大缓存大小,并根据上次访问时间或进入时间到期。
答案 1 :(得分:1)
我见过http://www.jboss.org/infinispan/曾经这样做过。它可以缓存到内存,磁盘和/或数据库。我不会说我喜欢它(配置不是非常简单,文档有点缺乏)但它肯定有效并且得到了积极维护。
答案 2 :(得分:1)