我正在使用hibernate 5和hazelcast 3.5.4。对于二级缓存,我使用HazelcastCacheRegionFactory,它恰好是分布式实现。
HazelcastLocalCacheRegionFactory文档明确指出,如果发生更新/删除失效消息,则会发送消息。
我在具有双节点群集二级缓存的本地网络中进行了测试。从节点读取实体后,另一个节点不访问数据库,而是从hazelcast中获取实体。但是,一旦节点更新实体,另一个节点就可以获取实体进行查询。
所以我的问题是HazelcastCacheRegionFactory是否在更新/删除时发送失效消息而不是传播更改。
谢谢。
答案 0 :(得分:1)
所以我的问题是HazelcastCacheRegionFactory是否发送了失效 更新/删除消息而不是传播更改。
不,它不会,传播更改,如documentation:
中所述
HazelcastCacheRegionFactory
使用标准Hazelcast分布式 地图。将执行所有操作,例如get
,put
和remove
使用分布式映射逻辑。使用的唯一缺点HazelcastCacheRegionFactory
可能是性能较低的HazelcastLocalCacheRegionFactory
因为操作被处理为 分布式电话。
我认为分布式Hibernate L2缓存的负面性能影响在上述文档中没有得到足够的重视,因为在实践中它可以如此之大以至于直接从db读取数据更快,正如我解释的那样{{ 3}}