Hazelcast Hibernate二级缓存配置

时间:2014-07-21 06:39:20

标签: hibernate configuration hazelcast second-level-cache

我正在尝试将Hazelcast用作Hibernate的二级缓存。我不确定在何处指定缓存配置。我在Hazelcast XML中添加了以下内容:

<map name="com.blah.entity.*">
    <backup-count>1</backup-count>
    <time-to-live-seconds>3600</time-to-live-seconds>
    <max-idle-seconds>600</max-idle-seconds>
    <eviction-policy>LRU</eviction-policy>
    <max-size policy="PER_NODE">5</max-size>
    <eviction-percentage>25</eviction-percentage>
    <near-cache>
        <max-size>5</max-size>
        <time-to-live-seconds>3600</time-to-live-seconds>
        <max-idle-seconds>600</max-idle-seconds>
        <eviction-policy>LRU</eviction-policy>
        <invalidate-on-change>true</invalidate-on-change>
    </near-cache>
</map>

但是,当我使用JVisualVM(带有JMX插件)来查看Map MBean时,我看到地图的大小是21(大于我的最大大小5)。

MBean上的maps'config'属性显示我的配置已应用:

MapConfig{name='com.blah.entity.*',
  inMemoryFormat=BINARY',
  backupCount=1,
  asyncBackupCount=0,
  timeToLiveSeconds=3600,
  maxIdleSeconds=600,
  evictionPolicy='LRU',
  evictionPercentage=25,
  maxSizeConfig=MaxSizeConfig{maxSizePolicy='PER_NODE',
    size=5},
  readBackupData=false,
  nearCacheConfig=NearCacheConfig{timeToLiveSeconds=3600,
    maxSize=5,
    evictionPolicy='LRU',
    maxIdleSeconds=600,
    invalidateOnChange=true,
    inMemoryFormat=BINARY,
    cacheLocalEntries=false},
  mapStoreConfig=null,
  mergePolicyConfig='com.hazelcast.map.merge.PutIfAbsentMapMergePolicy',
  wanReplicationRef=null,
  listenerConfigs=[],
  mapIndexConfigs=[]}

我在配置中做错了什么,还是我误读了JMX数据?

修改

为了澄清任何困惑,the documentation说明如下:

  

Hazelcast为每个Hibernate缓存创建一个单独的分布式映射   区域。因此,可以通过Hazelcast地图轻松配置这些区域   组态。您可以定义备份,逐出,TTL和近缓存   属性。

我想在地图上为我的实体的缓存区域设置max-size属性,因为我不希望缓存无限制地扩展。

2 个答案:

答案 0 :(得分:0)

使用Hibernate配置hibernate.cache.hazelcast.configuration_file_path中的以下属性指定配置的路径。

答案 1 :(得分:0)

事实证明我的配置是正确的,但Hazelcast 3.2.1 - 3.2.4中存在Wildcard Configuration

的错误

问题是地图名称中的通配符:<map name="com.blah.entity.*">如果我使用地图的完全限定名称,例如com.blah.entity.User,正确选取地图配置。我使用JMX验证了地图配置是否正确应用于缓存。

我已经确信此问题将在Hazelcast 3.3中修复