为何HashMap对象无法更新至Hazelcast IMap?首次put操作不生效
背景
我刚接触Hazelcast,目前正在开发一款使用Hazelcast缓存数据的内部工具。
问题
该Hazelcast IMap的键为String类型,值为HashMap<K, V>类型。
我们遇到的问题是:将更新后的HashMap对象通过put()方法存入IMap时,对象并未被更新,实际被更新的是HashMap<K, V>中的V值。
代码结构
主代码如下:
main() { updateTableStatus(...); // 其他业务逻辑 updateTableStatus(...); }
updateTableStatus方法用于更新IMap:
updateTableStatus(...) { hazelcastInstance.getMap("String").put(K, V); }
调试时发现,首次调用updateTableStatus并未更新HashMap对象,仅第二次调用才生效。
该工具是SpringBoot应用,HazelcastInstance对象的定义如下:
@Autowired HazelcastInstance hazelcastInstance;
我了解保存到Hazelcast IMap的对象需要可序列化,Hazelcast已针对HashMap对象做了序列化优化。
排查尝试
我不确定还能从哪些方向排查Hazelcast IMap的对象更新问题,已参考以下StackOverflow文章:
- SO文章#1
- SO文章#2
- SO文章#3
其中文章#3与我的问题最接近,但该帖子暂无解答,因此不知如何继续排查。
若需要更多项目或Hazelcast配置信息,请告知!我仍在学习中 :)
感谢各位的回复与理解 :)
内容的提问来源于stack exchange,提问作者waffledood
相关产品推荐
相关产品推荐

