Like Share Discussion Bookmark Smile

J.J. Huang   2019-04-10   Spring Boot   瀏覽次數:

SpringBoot - 第二十三章 | Redis的集成和使用(二)

前一章節示範了自動配置的StringRedisTemplate對象進行Redis的讀寫操作,該對像從命名中就可注意到支持的是String類型。有使用過spring-data-redis的一定熟悉RedisTemplate<K, V>接口,StringRedisTemplate就相當於RedisTemplate<String, String>的實作。

除了String類型,開發中我們還經常會在Redis中存儲對象,這時候我們就會想是否可以使用類似RedisTemplate<String, Customer>來初始化並進行操作。但是Spring Boot並不支持直接使用,需要我們自己實作RedisSerializer接口來對傳入對象進行序列化和反序列化,下方會通過一個實例來完成對象的讀寫操作。

Docker Redis準備

1
docker run --name myredis -p 6379:6379 -d redis:3.2 redis-server --appendonly yes

命令說明:

1
2
3
--name myredis:容器取名為myredis
-p 6379:6379 : 將容器的6379端口映射到主機的6379端口
redis-server --appendonly yes : 在容器執行redis-server啟動命令,並打開redis持久化配置

相關配置

Spring Boot提供的資料訪問框架Spring Data Redis基於Jedis。可以通過引入spring-boot-starter-redis來配置依賴關係。

加入pom的依賴

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
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
<!-- 1.5的版本預設連接池是jedis,2.0以上預設連接池是lettuce, 這邊採用jedis,所以排除lettuce -->
<exclusions>
<exclusion>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
</exclusion>
<exclusion>
<groupId>io.lettuce</groupId>
<artifactId>lettuce-core</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- jedis客戶端 -->
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
</dependency>
<!-- spring2.X集成redis所需common-pool2,使用jedis必須依賴它 -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-pool2</artifactId>
</dependency>

參數配置

在src/main/resources/application.properties中配置Redis服務端訊息

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# REDIS (RedisProperties)
# Redis資料庫索引(預設為0)
spring.redis.database=0
# Redis伺服器地址
spring.redis.host=localhost
# Redis伺服器連接端口
spring.redis.port=6379
# Redis伺服器連接密碼(預設為空)
spring.redis.password=
# 連接池最大連接數(使用負值表示沒有限制)
spring.redis.pool.max-active=8
# 連接池最大阻塞等待時間(使用負值表示沒有限制)
spring.redis.pool.max-wait=-1
# 連接池中的最大空閒連接
spring.redis.pool.max-idle=8
# 連接池中的最小空閒連接
spring.redis.pool.min-idle=0
# 連接超時時間(毫秒)
spring.redis.timeout=1000

建立 Customer

建立 RedisObjectSerializer (實現對象的序列化接口)

建立 RedisConfig (配置針對Customer的RedisTemplate實例)

測試

撰寫測試

測試結果

我們可以透過Redis-cli指令去查詢看這個是否有寫入

註:以上參考了
SpringBoot2.0+整合redis,使用 RedisTemplate操作redis
oKongSpringBoot | 第十一章:Redis的集成和简单使用文章。
程序猿DD-翟永超Spring Boot中使用Redis数据库 文章。