Hazelcast - ISet
java.util.Set 提供了一个用于保存唯一对象集合的接口。 元素的顺序并不重要。
类似地,ISet 实现了 Java Set 的分布式版本。 它提供了类似的功能:add、forEach等。
关于 ISet 需要注意的一个要点是,与其他集合数据不同,它没有分区。 所有数据都存储/存在于单个 JVM 上。 所有 JVM 仍然可以访问数据,但该集合无法扩展到单个机器/JVM 之外。
该集支持同步备份和异步备份。 同步备份可确保即使保存该集合的 JVM 出现故障,所有元素都将被保留并可从备份中获取。
让我们看一个有用函数的示例。
添加元素和读取元素
让我们在 2 个 JVM 上执行以下代码。 其中一个是生产者代码,另一个是消费者代码。
示例
第一部分是生产者代码,它创建一个集合并向其中添加项目。
public static void main(String... args) throws IOException, InterruptedException { //initialize hazelcast instance HazelcastInstance hazelcast = Hazelcast.newHazelcastInstance(); // create a set ISet<String> hzFruits = hazelcast.getSet("fruits"); hzFruits.add("Mango"); hzFruits.add("Apple"); hzFruits.add("Banana"); // adding an existing fruit System.out.println(hzFruits.add("Apple")); System.out.println("Size of set:" + hzFruits.size()); System.exit(0); }
第二部分是读取集合元素的消费者代码。
public static void main(String... args) throws IOException, InterruptedException { //initialize hazelcast instance HazelcastInstance hazelcast = Hazelcast.newHazelcastInstance(); // create a set ISet<String> hzFruits = hazelcast.getSet("fruits"); Thread.sleep(2000); hzFruits.forEach(System.out::println); System.exit(0); }
输出
生产者代码的输出显示它无法添加现有元素。
false 3
消费者代码的输出打印设置的大小和可以采用不同顺序的水果。
3 Banana Mango Apple
有用的方法
Sr.No | 函数名称 & 描述 |
---|---|
1 | add(Type element) 将元素添加到集合中(如果尚不存在) |
2 | remove(Type element) 从集合中删除元素 |
3 | size() 返回集合中元素的个数 |
4 | contains(Type element) 如果元素存在则返回 |
5 | getPartitionKey() 返回保存该集合的分区键 |
6 | addItemListener(ItemListener<Type>listener, value) 通知订阅者集合中的元素被删除/添加/修改。 |
hazelcast_data_structures.html