让我们说我们有两个淡淡的实例:
HazelcastInstance firstInstance = Hazelcast.newHazelcastInstance(new Config());
HazelcastInstance secondInstance = Hazelcast.newHazelcastInstance(new Config());
// Add entries to firstInstance
// Add entries to secondInstance
现在我尝试删除firstInstance
和add everything from
secondInstance to firstInstance
中的所有内容。
有没有办法实现这个目标?
答案 0 :(得分:6)
首先,根据代码中显示的两个实例的初始化,两者都是属于同一群集组的群集成员,并且在默认配置下,它们都将包含所有共享数据。换句话说,您不需要“传输”信息。
如果上述情况属实,那么当您从第一个实例中删除时,您将不会拥有任何数据副本(除了各自的来源)。
但是,如果使用将它们绑定到不同群集组的配置初始化实例(请记住,问题中的代码没有这样做),使用Java Map / Collections API“复制”很容易(其中Hazelcast共享数据结构类型实现):
secondInstance.getMap("myMap").putAll(firstInstance.getMap("myMap"));
firstInstance.getMap("myMap").clear(); //please confirm this.
可以以类似的方式处理分布式列表。 此外,请注意此类“批量副本”,因为您的成员可能会遇到内存不足错误(当然,这取决于您的数据大小)。
有关详细信息,请参阅此处:http://docs.hazelcast.org/docs/3.6/manual/html-single/index.html#preventing-out-of-memory-exceptions