Hazelcast Hibernate 查询缓存区域配置

Hazelcast Hibernate Query Cache Region configuration

我是 运行 P2P 模式下的 Hazelcast 3.11 和 Hibernate-5.3。我已经为我的实体配置了具有过期策略的二级缓存区域。现在我正在尝试为我的查询缓存配置过期策略,但问题是,我找不到查询缓存默认区域名称,也不确定它是否可以使用 hazelcast 映射进行配置。我尝试了下一个配置,但没有成功:

    eviction-policy: LFU
    in-memory-format: BINARY
    name: org.hibernate.cache.internal.*
    max-size: 1000
    max-size-policy: PER_NODE
    time-to-live: 10
    time-to-idle: 10

    eviction-policy: LFU
    in-memory-format: BINARY
    name: default-query-results-region
    max-size: 1000
    max-size-policy: PER_NODE
    time-to-live: 10
    time-to-idle: 10

是否可以使用 hazelcast 配置查询缓存区域?

编辑: 根据查询执行期间设置的缓存区域名称,必须在 Hazelcast 配置中配置具有该区域名称的地图。例如,default-query-results-region 将被使用并且必须为以下查询配置:

session.createQuery(QUERY_STRING).setCacheable(true);

custom-name 用于以下内容:

session.createQuery(QUERY_STRING).setCacheable(true).setCacheRegion("custom-name");

您应该以编程方式或在 hazelcast.xml 上配置地图配置,以便:

<map name="default-query-results-region">
    <max-size>1000</max-size>
    <time-to-live-seconds>10</time-to-live-seconds>
</map>    

<map name="custom-name">
    <max-size>1000</max-size>
    <time-to-live-seconds>10</time-to-live-seconds>
</map>

请记住,在 Hazelcast L2C 中,查询结果不会缓存在分布式地图中,而是缓存在本地地图中。根据 max-sizetime-to-live 标准,基于 的驱逐定期执行基本清理程序。其他选项(驱逐策略、内存格式、空闲时间等)即使您设置也会被忽略。