日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

Spring Boot如何整合Redis

Spring Boot是目前非常流行的Java Web開(kāi)發(fā)框架,Redis是非關(guān)系型數(shù)據(jù)庫(kù)的一種 , 以鍵值對(duì)的形式存儲(chǔ) 。Spring對(duì)Redis的支持是通過(guò)Spring Data Redis來(lái)實(shí)現(xiàn)的,給我們提供了RedisTemplate和StringRedisTemplate兩種模板來(lái)操作數(shù)據(jù) 。Spring Boot框架也提供了對(duì)Redis的支持 , 下面我們來(lái)講一下Spring Boot框架整合Redis的步驟 。

Spring Boot如何整合Redis


工具/材料IntelliJ IDEA
操作方法01、Spring Boot整合Redis我們需要添加依賴的jar包,spring-boot-starter-data-redis中包含spring和redis相關(guān)的jar包,jedis作為redis的客戶端也需要添加到工程中,Spring Boot的版本信息在父pom中已指定,子模塊中的spring相關(guān)的jar包無(wú)需另外指定 。

org.springframework.boot
spring-boot-starter-data-redis


redis.clients
jedis
3.0.0-m1

【Spring Boot如何整合Redis】02、Spring Boot會(huì)根據(jù)application.properties中的配置對(duì)Redis的屬性進(jìn)行自動(dòng)配置 , 并注入到RedisProperties類(lèi)中 。在application.properties配置文件中這些屬性都是以spring.redis為前綴的,值得注意的是在Spring Boot 1.5.x版本中默認(rèn)的Redis客戶端是jedis,因此在配置文件中無(wú)需指定,如下圖所示 。
03、Spring Boot 1.5.x版本的整合配置網(wǎng)上可以搜索大量的文章,然而Spring Boot 2.x版本的整合資料卻非常少 , 甚至提供的配置不能正常使用,因此本文主要講解Spring Boot 2.x整合Redis以及Redis的使用情況 。spring-boot 2.x版本有jedis和lettuce兩種客戶端,因此我們必須要去指定使用哪一種客戶端,兩個(gè)客戶端的配置如下圖所示,本文使用的是Jedis客戶端連接池 , 具體的配置如下 。
# Redis數(shù)據(jù)庫(kù)索引(默認(rèn)為0)
spring.redis.database=0
# Redis服務(wù)器地址
spring.redis.host=127.0.0.1

# Redis服務(wù)器連接端口
spring.redis.port=6379
# Redis服務(wù)器連接密碼(默認(rèn)為空)
spring.redis.password=xylx1.t!@#
# 配置jedis連接池
# 連接池最大連接數(shù)(使用負(fù)值表示沒(méi)有限制)
spring.redis.jedis.pool.max-active=8
# 連接池最大阻塞等待時(shí)間(使用負(fù)值表示沒(méi)有限制)
spring.redis.jedis.pool.max-wait=-1ms
# 連接池中的最大空閑連接
spring.redis.jedis.pool.max-idle=8
# 連接池中的最小空閑連接
spring.redis.jedis.pool.min-idle=0
# 連接超時(shí)時(shí)間(毫秒)
spring.redis.timeout=5000ms
由配置我們可以看到spring-boot 2.x版本時(shí)間設(shè)置需要加單位ms,因?yàn)閰?shù)的類(lèi)型為Duration 。另外spring.redis.timeout盡量不要配置0,否則可能會(huì)出現(xiàn)io.lettuce.core.RedisCommandTimeoutException: Command timed out超時(shí)錯(cuò)誤 。
04、配置文件編輯完成后,我們開(kāi)始編寫(xiě)代碼實(shí)現(xiàn)Redis數(shù)據(jù)的存儲(chǔ)和讀取 。我們創(chuàng)建一個(gè)RedisUtil工具類(lèi),該類(lèi)使用@Component注解表示交由Spring管理,StringRedisTemplate是Spring提供的 , 可以使用@Autowired注解直接注入,接下來(lái)便可以書(shū)寫(xiě)存和取的代碼了 。
@Component
public class RedisUtil {

@Autowired
private StringRedisTemplate redisTemplate;

/**
* 存字符串
* @param key 緩存鍵
* @param value 緩存值
* @param expireTime過(guò)期時(shí)間(s)
*/
public void setString(String key, String value, int expireTime){
ValueOperations ops = redisTemplate.opsForValue();
if (expireTime != 0) {
ops.set(key, value, expireTime, TimeUnit.SECONDS);
} else {
ops.set(key,value);
}
}

/**
* 取字符串
* @param key 緩存鍵
* @return緩存值
*/
public String getString(String key){
ValueOperations ops = this.redisTemplate.opsForValue();
return ops.get(key);
}
05、接下來(lái)我們編寫(xiě)Controller層代碼去調(diào)用RedisUtil工具類(lèi) , 實(shí)現(xiàn)數(shù)據(jù)的存儲(chǔ)和讀取 , 代碼比較簡(jiǎn)單可以參考下圖 。若想驗(yàn)證Redis是否可用 , 還需要編寫(xiě)啟動(dòng)類(lèi) , 如下圖所示 。

推薦閱讀