Hazelcast Hibernate查询缓存区域配置

Hazelcast Hibernate查询缓存区域配置,hibernate,hazelcast,second-level-cache,query-cache,Hibernate,Hazelcast,Second Level Cache,Query Cache,我正在P2P模式下运行Hazelcast 3.11和Hibernate-5.3。我已经为矿山实体配置了具有过期策略的二级缓存区域。现在,我正在尝试为我的查询缓存配置过期策略,但问题是,我无法找到查询缓存默认区域名称,也不确定是否可以使用hazelcast映射进行配置。我尝试了next configs,但没有成功: eviction-policy: LFU in-memory-format: BINARY name: org.hibernate.cache.internal

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

    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

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

编辑: 根据查询执行期间设置的缓存区域名称,必须在Hazelcast配置中配置具有此区域名称的映射。例如,将使用默认查询结果区域,并且必须为以下查询配置该区域:

session.createQuery(查询字符串).setCacheable(true);
自定义名称
,用于以下各项:

session.createQuery(QUERY_STRING).setCacheable(true).setCacheRegion(“自定义名称”);

您应该以编程方式或在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>

1000
10
1000
10

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

谢谢您的回答。为
name=“default query results region”
设置任何配置对我都不起作用,我在最初的帖子中提到过。更糟糕的是,我无法在
cacheManager.getCacheNames()
SessionFactory.getStatistics()
中找到任何具有该名称的map\cache,我能看到的唯一与hibernate相关的缓存名称是
“默认更新时间戳区域”
那么,您不能通过
sessionFactory.getStatistics().getQueryCacheChitCount()
sessionFactory.getStatistics().getQueryCacheChitCount()
找到统计信息吗?您能试试这个吗:在Hazelcast上配置映射后,让我们说“QueryMap”<代码>session.createQuery(query).setMaxResults(10).setCacheable(true).setCacheRegion(“QueryMap”)。然后您必须通过以下方式查看区域名称中的区域:
factory.getStatistics().getSecondLevelCacheRegionNames()
好的,我的坏消息。为我使用自定义查询区域(顺便说一句,我使用的是JPA数据存储库,它也适用于QuryHits)。在那之后,我在QuryHits和map config name中切换回了
默认查询结果区域
,它也起了作用,尽管我不能让它整天都工作。看来我错过了什么。谢谢你的帮助。
<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>