putAll 使用 Hazelcast IMap 导致单个 store() 调用

putAll causing single store() calls with Hazelcast IMap

我有一个由 MapStore 实现支持的简单地图。 当我在地图上调用 putAll() 时,传递要添加到地图的键值对映射时,Hazelcast 出于某种原因在 MapStore 上为每个值调用 store() 方法,而不是调用 storeAll() 一次。

不确定为什么会出现这种情况。 Hazelcast 地图是否支持 putAll/storeAll 关系?

谢谢, 康拉德

Hazelcast 支持不同的持久性模式,即。直读、直写和后写模式。

storeAll()deleteAll() 等批量写入操作仅在后写模式下受支持。因此,在您的情况下,您需要打开 write-behind 模式才能使用 storeAll()

为了 "turn on" 后写模式,您需要在配置 xml 中将 <write-delay-seconds> 设置为大于 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