【hazelcast入门系列之三】hazelcast的Queue、MultiMap、Set、List

本文介绍hazelcast中Queue、MultiMap、Set、List的使用。

Queue的使用

首先是一个简单的例子,生产者-消费者模式。
Producer代码
Consumer代码
启动一个生产者会以1秒1个的速度放入队列数据,最后放入-1。
消费者会每5秒消费一个队列数据,如果取得的数据为-1,则停止。停止前再次放入一个-1。
这样可以启动多个消费者共同消费同一个队列,当消费完毕后同时停止。并且由于都是在同一个机器执行,hazelcast自身会组成一个集群,所以queue消息共享。

MultiMap的使用

MultiMap提供了一种可以在一个key值中存储多个val值的存储结构。
有趣的一点是其移除一个元素,是需要指定key和val的,否则则把该key所有对应val都移除了。
MultiMap示例代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
package com.roytrack.hazelcast.distributed.data.structure.multimap;

import com.hazelcast.core.Hazelcast;
import com.hazelcast.core.HazelcastInstance;
import com.hazelcast.core.MultiMap;

import java.util.Collection;

public class MultiMapDemo {
public static void main(String[] args) {
HazelcastInstance hazelcastInstance = Hazelcast.newHazelcastInstance();
MultiMap<String, String> map = hazelcastInstance.getMultiMap("map");
map.put("a", "0");
map.put("a", "1");
map.put("a", "2");
map.put("b", "3");
System.out.println("PutMember:Done");

for (String key : map.keySet()) {
Collection<String> values = map.get(key);
System.out.printf("%s -> %s\n", key, values);
}
//移除一个
map.remove("a", "0");
System.out.println("------------------------------");
for (String key : map.keySet()) {
Collection<String> values = map.get(key);
System.out.printf("%s -> %s\n", key, values);
}

//移除所有
map.remove("a");
System.out.println("------------------------------");
for (String key : map.keySet()) {
Collection<String> values = map.get(key);
System.out.printf("%s -> %s\n", key, values);
}

}
}

运行结果:

Set、List的使用

Set和List都实现了JDK的标准接口,这里就只放出使用示例代码吧。
SetDemo代码
ListDemo代码

总结

通过对hazelcast四种分布式对象的示例代码,可以看出hazelcast为了减少学习负担,大部分结构提供了与JDK一致的方法,这一点比较容易被新手锁接受。

本文标题:【hazelcast入门系列之三】hazelcast的Queue、MultiMap、Set、List

文章作者:roytrack

发布时间:2019年01月06日 - 22:01

原始链接:http://www.roytrack.com/2019/01/id6/

许可协议: 转载请保留原文链接及作者。