Spring Boot是目前非常流行的Java Web開發框架, Redis是非關系型數據庫的一種, 以鍵值對的形式存儲 。 Spring對Redis的支持是通過Spring Data Redis來實現的, 給我們提供了RedisTemplate和StringRedisTemplate兩種模板來操作數據 。 Spring Boot框架也提供了對Redis的支持, 下面我們來講一下Spring Boot框架整合Redis的步驟 。 操作方式 01 Spring Boot整合Redis我們需要添加依靠的jar包, spring-boot-starter-data-redis中包含spring和redis相關的jar包, jedis作為redis的客戶端也需要添加到工程中, Spring Boot的版本信息在父pom中已指定, 子模塊中的spring相關的jar包無需別的指定 。
org.springframework.boot
spring-boot-starter-data-redis
redis.clients
jedis
3.0.0-m1
02 【Spring Boot如何整合Redis】Spring Boot會按照application.properties中的設置裝備擺設對Redis的屬性進行主動設置裝備擺設, 并注入到RedisProperties類中 。 在application.properties設置裝備擺設文件中這些屬性都是以spring.redis為前綴的, 值得注重的是在Spring Boot 1.5.x版本中默認的Redis客戶端是jedis, 是以在設置裝備擺設文件中無需指定, 如下圖所示 。
03 Spring Boot 1.5.x版本的整合設置裝備擺設網上可以搜刮年夜量的文章, 然而Spring Boot 2.x版本的整合伙料卻很是少, 甚至供給的設置裝備擺設不克不及正常利用, 是以本文本家兒要講解Spring Boot 2.x整合Redis以及Redis的利用環境 。 spring-boot 2.x版本有jedis和lettuce兩種客戶端, 是以我們必需要去指定利用哪一種客戶端, 兩個客戶端的設置裝備擺設如下圖所示, 本文利用的是Jedis客戶端毗連池, 具體的設置裝備擺設如下 。
# Redis數據庫索引(默認為0)
spring.redis.database=0
# Redis辦事器地址
spring.redis.host=127.0.0.1
# Redis辦事器毗連端口
spring.redis.port=6379
# Redis辦事器毗連暗碼(默認為空)
spring.redis.password=xylx1.t!@#
# 設置裝備擺設jedis毗連池
# 毗連池最年夜毗連數(利用負值暗示沒有限制)
spring.redis.jedis.pool.max-active=8
# 毗連池最年夜梗阻期待時候(利用負值暗示沒有限制)
spring.redis.jedis.pool.max-wait=-1ms
# 毗連池中的最年夜余暇毗連
spring.redis.jedis.pool.max-idle=8
# 毗連池中的最小余暇毗連
spring.redis.jedis.pool.min-idle=0
# 毗連超不時間(毫秒)
spring.redis.timeout=5000ms
由設置裝備擺設我們可以看到spring-boot 2.x版本時候設置需要加單元ms, 因為參數的類型為Duration 。 別的spring.redis.timeout盡量不要設置裝備擺設0, 不然可能會呈現io.lettuce.core.RedisCommandTimeoutException: Command timed out超時錯誤 。
04 設置裝備擺設文件編纂完當作后, 我們起頭編寫代碼實現Redis數據的存儲和讀取 。 我們建立一個RedisUtil東西類, 該類利用@Component注解暗示交由Spring辦理, StringRedisTemplate是Spring供給的, 可以利用@Autowired注解直接注入, 接下來便可以書寫存和取的代碼了 。
@Component
public class RedisUtil {
@Autowired
private StringRedisTemplate redisTemplate;
/**
* 存字符串
* @param key 緩存鍵
* @param value 緩存值
* @param expireTime 過時時候(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){
猜你喜歡
- 如何利用Python中的Pandas庫繪制柱形圖
- excel中如何清除內容格式
- SolidWorks如何創建一個香煙?
- 微信被拉黑了,如何不加好友的情況下進行聊天
- 如何鑒別茶葉的好壞?_0
- 如何實現微信手機端與電腦端同步?
- 象牙手鐲如何鑒定
- 木香花如何養植
- iphone11如何調節觸控靈敏度
- OPPO Ace2云服務功能如何使用呢?
