2017-02-03 96 views
0

我正在分析JCache参考实现,并找到了Hazelcast。所以问题是:Hazelcast全球高级功能

  1. 有没有办法与Hibernate一起使用Hazelcast并为不同的jpa实体设置不同的过期值? EHCache支持它,但我没有设法为Hazelcast做例子。
  2. Hazelcast是否支持缓存到文件系统和缓存到数据库?
  3. 将它仅用作本地缓存是个好主意吗?它不重量级?

回答

1

Hazelcast配置允许您定义命名的地图区域,或者在Hibernate中说出区域。当您在实体上指定@Cache时,除非您自己指定region属性,否则区域名称将被解析为实体的完全限定类名称。

在你Hazelcast配置,你经常有这样的事从Hazelcast文档下采取:

<hazelcast> 
    <map name="com.company.feature.domain.SomeEntityClass"> 
    <time-to-live-seconds>0</time-to-live-seconds> 
    <max-idle-seconds>0</max-idle-seconds> 
    <eviction-policy>LRU</eviction-policy> 
    <max-size policy="PER_NODE">5000</max-size> 
    <eviction-percentage>25</eviction-percentage> 
    <min-eviction-check-millis>100</min-eviction-check-millis> 
    </map> 
</hazelcast> 

每个地图区域允许您定义的区域如何被驱逐。除非您定义驱逐策略或手动从缓存中移除元素,否则Hazelcast将无限期地缓存它们。欢迎您阅读Hazelcast文档,其中介绍了各种配置属性所代表的内容以及它们的有效值集。

至于持续性,是Hazelcast允许您定义一个<mapstore/>配置,其中您指定MapStoreMapLoader的实现,以便您可以将缓存保留为您的需要。

最后,我不一定要对重量级因素的Hazelcast。也许其他人可以在这一点上做出贡献。

我的建议是测试它和其他市场和配置文件中的选项,从性能和可用性角度来看最适合您的需求,从而衡量配置&维护所需的灵活性和刚性。