2017-02-03 93 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。也許其他人可以在這一點上做出貢獻。

我的建議是測試它和其他市場和配置文件中的選項,從性能和可用性角度來看最適合您的需求,從而衡量配置&維護所需的靈活性和剛性。