我计划使用Hazelcast缓存应用程序数据。想知道是否有一种方法将缓存的数据序列化并存储到节点的辅助内存中?
基本上我想序列化和存储缓存的数据在节点上的某个文件夹。这样就可以在最坏的情况下恢复web会话,当我的两个节点都死了。
如果实现存储加载功能(在Hazelcast的配置XML文件中添加存储加载实现类名),则任何映射的放置/删除操作都将调用存储加载实现。您可以在应用程序启动时使用load all,而在数据不在缓存中的情况下将使用load(在这种情况下,它将尝试从后端实现获取数据)。我建议您使用数据库(任何类型),而不是推出自己的基于文件的实现。
测试图XML文件信息:
<map name="testMap">
<backup-count>1</backup-count>
<eviction-policy>NONE</eviction-policy>
<max-size policy="cluster_wide_map_size">0</max-size>
<eviction-percentage>25</eviction-percentage>
<merge-policy>hz.ADD_NEW_ENTRY</merge-policy>
<!-- MapStore-Load-->
<map-store enabled="true">
<class-name>models.test.StoreLoadTestMap</class-name>
<write-delay-seconds>0</write-delay-seconds>
</map-store>
</map>
在你的实现类中,你需要为store, storeAll, load, loadAll, loadAllKeys, delete, deleteAll提供实现。