hibernate - Hazelcast Hibernate 查询缓存区域配置
问题描述
我在 P2P 模式和 Hibernate-5.3 下运行 Hazelcast 3.11。我已经为我的实体配置了具有过期策略的二级缓存区域。现在我正在尝试为我的查询缓存配置过期策略,但问题是,我找不到查询缓存默认区域名称,并且不确定它是否可以使用 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-size
的驱逐定期执行基本清理程序。time-to-live
即使您设置,其他选项(驱逐策略、内存格式、空闲时间等)也将被忽略。
推荐阅读
- swift - 如何将选择器绑定到 NSObject 中的方法
- java - 如何使用实现父接口的类中的构造函数初始化接口类型的对象?
- git - 如何在本地删除 git 文件而不从远程存储库中删除它们?
- r - 匹配单词字符串并返回不匹配的单词
- spotfire - Spotfire 自定义表达式从列中添加值
- azure - 如何在 Microsoft Azure Vault 中存储密钥库?
- android - 如何使用天气 API 和 JSON 数据来确定当前时间是白天还是晚上(android)
- docker - 带有 JHipster 和 Docker 注册表的 Gitlab CI/CD
- javascript - 在 React Hook 中调整大小时回调未触发
- javascript - 根据 React-Redux 状态的动态页面不更新渲染数据