Skip to content

Commit 49ca81a

Browse files
committed
添加redis客户端-redisson相关操作
1 parent 5b7aea8 commit 49ca81a

File tree

10 files changed

+250
-16
lines changed

10 files changed

+250
-16
lines changed

pom.xml

Lines changed: 30 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@
4242
<slf4j.version>1.7.32</slf4j.version>
4343
<logback.version>1.2.6</logback.version>
4444
<apache.commons-lang3.version>3.12.0</apache.commons-lang3.version>
45+
<redisson.version>3.13.6</redisson.version>
4546
</properties>
4647

4748
<dependencies>
@@ -53,6 +54,7 @@
5354

5455
<dependencyManagement>
5556
<dependencies>
57+
<!-- 内部module依赖 start-->
5658
<dependency>
5759
<groupId>iot-technology</groupId>
5860
<artifactId>server</artifactId>
@@ -63,16 +65,8 @@
6365
<artifactId>storage</artifactId>
6466
<version>${project.version}</version>
6567
</dependency>
66-
<dependency>
67-
<groupId>org.springframework.boot</groupId>
68-
<artifactId>spring-boot-starter-web</artifactId>
69-
<version>${spring-boot.version}</version>
70-
</dependency>
71-
<dependency>
72-
<groupId>io.netty</groupId>
73-
<artifactId>netty-all</artifactId>
74-
<version>${netty.version}</version>
75-
</dependency>
68+
<!-- 内部module依赖 end-->
69+
<!-- 日志依赖 start-->
7670
<dependency>
7771
<groupId>org.slf4j</groupId>
7872
<artifactId>slf4j-api</artifactId>
@@ -93,6 +87,8 @@
9387
<artifactId>logback-classic</artifactId>
9488
<version>${logback.version}</version>
9589
</dependency>
90+
<!-- 日志依赖 end-->
91+
<!-- 工具类 start-->
9692
<dependency>
9793
<groupId>org.projectlombok</groupId>
9894
<artifactId>lombok</artifactId>
@@ -114,6 +110,30 @@
114110
<artifactId>spring-context-support</artifactId>
115111
<version>${spring.version}</version>
116112
</dependency>
113+
<!-- web框架依赖 -->
114+
<dependency>
115+
<groupId>org.springframework.boot</groupId>
116+
<artifactId>spring-boot-starter-web</artifactId>
117+
<version>${spring-boot.version}</version>
118+
</dependency>
119+
<dependency>
120+
<groupId>org.springframework.boot</groupId>
121+
<artifactId>spring-boot-starter-test</artifactId>
122+
<version>${spring-boot.version}</version>
123+
<scope>test</scope>
124+
</dependency>
125+
<!-- 底层通讯框架依赖 -->
126+
<dependency>
127+
<groupId>io.netty</groupId>
128+
<artifactId>netty-all</artifactId>
129+
<version>${netty.version}</version>
130+
</dependency>
131+
<!-- redisson -->
132+
<dependency>
133+
<groupId>org.redisson</groupId>
134+
<artifactId>redisson-spring-boot-starter</artifactId>
135+
<version>${redisson.version}</version>
136+
</dependency>
117137
</dependencies>
118138
</dependencyManagement>
119139

server/pom.xml

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,19 @@
1818
</properties>
1919

2020
<dependencies>
21+
<dependency>
22+
<groupId>iot-technology</groupId>
23+
<artifactId>storage</artifactId>
24+
</dependency>
2125
<dependency>
2226
<groupId>org.springframework.boot</groupId>
2327
<artifactId>spring-boot-starter-web</artifactId>
2428
</dependency>
29+
<dependency>
30+
<groupId>org.springframework.boot</groupId>
31+
<artifactId>spring-boot-starter-test</artifactId>
32+
<scope>test</scope>
33+
</dependency>
2534
<dependency>
2635
<groupId>io.netty</groupId>
2736
<artifactId>netty-all</artifactId>
@@ -30,10 +39,6 @@
3039
<groupId>org.apache.commons</groupId>
3140
<artifactId>commons-lang3</artifactId>
3241
</dependency>
33-
<dependency>
34-
<groupId>iot-technology</groupId>
35-
<artifactId>storage</artifactId>
36-
</dependency>
3742
</dependencies>
3843

3944
<build>

server/src/main/resources/application.yml

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,4 +9,12 @@ mqtt:
99
leak_detector_level: DISABLED
1010
boss_group_thread_count: 1
1111
worker_group_thread_count: 8
12-
max_payload_size: 65536
12+
max_payload_size: 65536
13+
14+
15+
spring:
16+
application:
17+
name: IoT-Technology-MQTT-Broker
18+
redis:
19+
redisson:
20+
file: classpath:redisson.yml
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
# 单节点配置
2+
singleServerConfig:
3+
# 连接空闲超时,单位:毫秒
4+
idleConnectionTimeout: 10000
5+
# 连接超时,单位:毫秒
6+
connectTimeout: 10000
7+
# 命令等待超时,单位:毫秒
8+
timeout: 3000
9+
# 命令失败重试次数,如果尝试达到 retryAttempts(命令失败重试次数) 仍然不能将命令发送至某个指定的节点时,将抛出错误。
10+
# 如果尝试在此限制之内发送成功,则开始启用 timeout(命令等待超时) 计时。
11+
retryAttempts: 3
12+
# 命令重试发送时间间隔,单位:毫秒
13+
retryInterval: 1500
14+
# 密码
15+
password:
16+
# 单个连接最大订阅数量
17+
subscriptionsPerConnection: 5
18+
# 客户端名称
19+
clientName: mqtt-redis
20+
# 节点地址
21+
address: redis://127.0.0.1:6379
22+
# 发布和订阅连接的最小空闲连接数
23+
subscriptionConnectionMinimumIdleSize: 1
24+
# 发布和订阅连接池大小
25+
subscriptionConnectionPoolSize: 50
26+
# 最小空闲连接数
27+
connectionMinimumIdleSize: 32
28+
# 连接池大小
29+
connectionPoolSize: 64
30+
# 数据库编号
31+
database: 0
32+
# DNS监测时间间隔,单位:毫秒
33+
dnsMonitoringInterval: 5000
34+
# 线程池数量,默认值: 当前处理核数量 * 2
35+
#threads: 0
36+
# Netty线程池数量,默认值: 当前处理核数量 * 2
37+
#nettyThreads: 0
38+
# 编码
39+
codec: !<org.redisson.codec.JsonJacksonCodec> {}
40+
# 传输模式
41+
transportMode : "NIO"
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
package iot.technology.mqtt.server;
2+
3+
import iot.technology.mqtt.server.domain.Book;
4+
import iot.technology.mqtt.storage.session.cache.RedissonClientService;
5+
import lombok.extern.slf4j.Slf4j;
6+
import org.junit.Test;
7+
import org.junit.runner.RunWith;
8+
import org.springframework.boot.test.context.SpringBootTest;
9+
import org.springframework.test.context.junit4.SpringRunner;
10+
11+
import javax.annotation.Resource;
12+
13+
/**
14+
* @author mushuwei
15+
*/
16+
@Slf4j
17+
@RunWith(SpringRunner.class)
18+
@SpringBootTest
19+
public class MQTTRedissonApplicationTests {
20+
21+
@Resource
22+
private RedissonClientService clientService;
23+
24+
@Test
25+
public void redisStringOperations() {
26+
Book book = new Book().setName("Harry Potter").setAuthor("J.K.Rowling").setPrice(120.00);
27+
clientService.put("harry-potter", book, null);
28+
Book bookCache = (Book) clientService.get("harry-potter");
29+
log.info("book:{}", bookCache);
30+
31+
}
32+
33+
}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package iot.technology.mqtt.server.domain;
2+
3+
import lombok.Data;
4+
import lombok.experimental.Accessors;
5+
6+
import java.io.Serializable;
7+
8+
/**
9+
* @author mushuwei
10+
*/
11+
@Data
12+
@Accessors(chain = true)
13+
public class Book implements Serializable {
14+
/**
15+
* 书名
16+
*/
17+
private String name;
18+
19+
/**
20+
* 作者
21+
*/
22+
private String author;
23+
24+
/**
25+
* 售价
26+
*/
27+
private Double price;
28+
}

server/target/classes/application.yml

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,4 +9,12 @@ mqtt:
99
leak_detector_level: DISABLED
1010
boss_group_thread_count: 1
1111
worker_group_thread_count: 8
12-
max_payload_size: 65536
12+
max_payload_size: 65536
13+
14+
15+
spring:
16+
application:
17+
name: IoT-Technology-MQTT-Broker
18+
redis:
19+
redisson:
20+
file: classpath:redisson.yml

storage/pom.xml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,10 @@
3030
<groupId>org.springframework</groupId>
3131
<artifactId>spring-context</artifactId>
3232
</dependency>
33+
<dependency>
34+
<groupId>org.redisson</groupId>
35+
<artifactId>redisson-spring-boot-starter</artifactId>
36+
</dependency>
3337
</dependencies>
3438

3539
</project>
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package iot.technology.mqtt.storage.session.cache;
2+
3+
/**
4+
* @author mushuwei
5+
*/
6+
public interface CacheManager {
7+
8+
Boolean delete(String key);
9+
10+
11+
Boolean put(String key, Object value, Integer expireTime);
12+
13+
14+
Object get(String key);
15+
16+
17+
Boolean existsKey(String key);
18+
19+
20+
Object getMap(String key, String mapKey);
21+
22+
Boolean putMap(String key, String mapKey, Object mapValue);
23+
}
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
package iot.technology.mqtt.storage.session.cache;
2+
3+
import org.redisson.api.RBucket;
4+
import org.redisson.api.RKeys;
5+
import org.redisson.api.RMap;
6+
import org.redisson.api.RedissonClient;
7+
import org.springframework.stereotype.Service;
8+
9+
import javax.annotation.Resource;
10+
import java.util.Objects;
11+
import java.util.concurrent.TimeUnit;
12+
13+
/**
14+
* @author mushuwei
15+
*/
16+
@Service("redissonClientService")
17+
public class RedissonClientService implements CacheManager {
18+
19+
@Resource
20+
private RedissonClient redissonClient;
21+
22+
@Override
23+
public Boolean delete(String key) {
24+
RKeys keys = redissonClient.getKeys();
25+
keys.delete(key);
26+
return Boolean.TRUE;
27+
}
28+
29+
30+
@Override
31+
public Boolean put(String key, Object value, Integer expireTime) {
32+
RBucket<Object> bucket = redissonClient.getBucket(key);
33+
int cacheTime = (Objects.nonNull(expireTime) && expireTime > 0) ? expireTime : 300;
34+
bucket.set(value, cacheTime, TimeUnit.SECONDS);
35+
return Boolean.TRUE;
36+
}
37+
38+
@Override
39+
public Object get(String key) {
40+
RBucket<Object> bucket = redissonClient.getBucket(key);
41+
return bucket.get();
42+
}
43+
44+
@Override
45+
public Boolean existsKey(String key) {
46+
RKeys keys = redissonClient.getKeys();
47+
Boolean result = keys.countExists(key) > 0 ? Boolean.TRUE : Boolean.FALSE;
48+
return result;
49+
}
50+
51+
52+
@Override
53+
public Object getMap(String key, String mapKey) {
54+
RMap<String, Object> map = redissonClient.getMap(key);
55+
return map.get(mapKey);
56+
}
57+
58+
@Override
59+
public Boolean putMap(String key, String mapKey, Object mapValue) {
60+
RMap<String, Object> map = redissonClient.getMap(key);
61+
map.put(mapKey, mapValue);
62+
return Boolean.TRUE;
63+
}
64+
}

0 commit comments

Comments
 (0)