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

Java 使用hibernate/jpa/memcache缓存大型数据集?,java,hibernate,jpa,redis,memcached,Java,Hibernate,Jpa,Redis,Memcached,我是开源栈的新手,一直在玩hibernate/jpa/jdbc和memcache。我在每个jdbc查询中都有一个大数据集,并且可能会在这些大数据集中有很多数据集,我最终会绑定到一个图表 但是,我非常关注性能,而不是在网页图表上显示每页的数据库负载 是否有一些示例说明如何(memcache、redis、local或distributed)缓存这些数据(jSON或原始结果数据)并将其加载到内存中?此外,我还需要弄清楚如何刷新缓存,除非它是基于时间的逐出标记算法(即30分钟到期,因此从数据库查询中获取

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

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

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


谢谢

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


另请参见:

这是典型的问题和解决方案,但不是直接解决的。有许多因素决定您的设计。这是我们以前做的

  • 由于我们提取数据的查询有点复杂(执行大约需要一分钟)和大数据集,因此我们从一个批次中填充memcache,该批次用于每1小时从数据库中提取数据并将其推送到memcached。通过保持到期缓存大于批处理间隔,我们确保缓存中的数据始终位于何处
  • 动态缓存还有另一个用例,在接收到数据请求时,我们首先检查memcached,如果找不到数据,则查询数据库,获取数据,将其推送到memcached并返回结果。但我建议只有当数据库查询简单且快速不足以导致较差的总体响应时,才使用这种方法
  • 您也可以使用Hibernat的。有效使用此功能取决于您的数据库模式、查询等