使用hibernate / jpa / memcache缓存大型数据集?

时间:2013-06-05 06:05:23

标签: java hibernate jpa redis memcached

我是开源堆栈的新手,并且一直在玩hibernate / jpa / jdbc和memcache。我每个jdbc查询都有一个大数据集,并且可能会有一些数字,这些数据集最终会绑定到图表。

但是,我非常关注性能而不是每页加载数据库以在我的网页图表上显示它。

是否有一些示例(memcache,redis,local或distributed)以及将数据(jSON或原始结果数据)缓存到内存中的位置?此外,我需要弄清楚如何刷新缓存,除非它是一个基于时间的逐出标记算法(即30分钟到期所以从数据库查询中获取新数据而不是使用缓存或者每隔xhrs / min /自动将数据馈送到缓存中等)。?

谢谢!

2 个答案:

答案 0 :(得分:2)

这是典型的问题和解决方案,不是直截了当的。有许多因素决定了您的设计。这是我们之前做过的事情

  • 由于我们提取数据的查询有点复杂花了大约一分钟执行)和大数据集,我们填充了memcache从一个用于每1小时从数据库中提取数据的批处理并将其推送到memcached。通过使到期缓存大于批处理间隔,我们确保缓存中的数据总是在哪里。
  • 还有另一个用于动态缓存的用例,其中在收到数据请求时,我们首先检查了memcached,如果找不到数据,查询数据库,获取数据,将其推送到memcached并返回结果。但是,只有当您的数据库查询简单且快速足以不导致整体响应不佳时,我才会建议这种方法。
  • 你也可以使用Hibernat的second level cache。这取决于您的数据库架构,查询等,以有效地使用此功能。

答案 1 :(得分:1)

Hibernate内置了对二级缓存的支持。以EhCache为例。

另见:http://docs.jboss.org/hibernate/orm/3.3/reference/en/html/performance.html#performance-cache

相关问题