我有一个由 MapStore 实现支持的简单地图。当我在地图上调用 putAll() 并传递要添加到地图的键值对地图时,Hazelcast 出于某种原因为每个值调用 MapStore 上的 store() 方法,而不是调用 storeAll() 一次。
不知道为什么会发生这种行为。hazelcast 地图是否支持 putAll/storeAll 关系?
谢谢,康拉德
我有一个由 MapStore 实现支持的简单地图。当我在地图上调用 putAll() 并传递要添加到地图的键值对地图时,Hazelcast 出于某种原因为每个值调用 MapStore 上的 store() 方法,而不是调用 storeAll() 一次。
不知道为什么会发生这种行为。hazelcast 地图是否支持 putAll/storeAll 关系?
谢谢,康拉德
Hazelcast 支持不同的持久性模式,即。通读、直写和后写模式。
storeAll()
像和一样的批量写入操作deleteAll()
仅在后写模式下受支持。因此,在您的情况下,您需要打开write-behind
模式以使用storeAll()
,。
为了“打开”后写模式,您需要<write-delay-seconds>
在配置 xml 中设置一个大于 0 的值。配置 <write-delay-seconds>
为“x”秒意味着修改后的条目将在“x”秒后异步放入存储中.
示例配置:
<map name="employeesMap">
<map-store enabled="true">
<class-name>main.jdbc.EmployeeMapStore</class-name>
<write-delay-seconds>10</write-delay-seconds>
</map-store>
</map>
我还想向您推荐与该主题相关的好读物。
http://docs.hazelcast.org/docs/3.5/manual/html/map-persistence.html