SpringBoot中使用Redis的完整實(shí)例
一.在SpringBoot中使用Redis的一套軍體拳
1.導(dǎo)包
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> <version>2.2.0.RELEASE</version> </dependency>
2.導(dǎo)入工具類
package com.cbsd.util; import java.util.concurrent.TimeUnit; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.HashOperations; import org.springframework.data.redis.core.ListOperations; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.core.SetOperations; import org.springframework.data.redis.core.ValueOperations; import org.springframework.data.redis.core.ZSetOperations; import org.springframework.stereotype.Component; import com.alibaba.fastjson.JSON; /** * redisTemplate封裝 * * @author gxp */ @Component public class RedisUtil { // private Logger logger = LoggerFactory.getLogger(this.getClass()); @Autowired private RedisTemplate<String, Object> redisTemplate; @Autowired private ValueOperations<String, String> valueOperations; @SuppressWarnings("unused") @Autowired private HashOperations<String, String, Object> hashOperations; @SuppressWarnings("unused") @Autowired private ListOperations<String, Object> listOperations; @SuppressWarnings("unused") @Autowired private SetOperations<String, Object> setOperations; @SuppressWarnings("unused") @Autowired private ZSetOperations<String, Object> zSetOperations; /** 默認(rèn)過(guò)期時(shí)長(zhǎng),單位:秒 */ public final static long DEFAULT_EXPIRE = 60 * 60 * 24; /** 不設(shè)置過(guò)期時(shí)長(zhǎng) */ public final static long NOT_EXPIRE = -1; public void set(String key, Object value, long expire){ valueOperations.set(key, toJson(value)); if(expire != NOT_EXPIRE){ redisTemplate.expire(key, expire, TimeUnit.SECONDS); } } public void set(String key, Object value){ set(key, value, DEFAULT_EXPIRE); } public <T> T get(String key, Class<T> clazz, long expire) { String value = valueOperations.get(key); if(expire != NOT_EXPIRE){ redisTemplate.expire(key, expire, TimeUnit.SECONDS); } return value == null ? null : fromJson(value, clazz); } public <T> T get(String key, Class<T> clazz) { return get(key, clazz, NOT_EXPIRE); } public String get(String key, long expire) { String value = valueOperations.get(key); if(expire != NOT_EXPIRE){ redisTemplate.expire(key, expire, TimeUnit.SECONDS); } return value; } public String get(String key) { return get(key, NOT_EXPIRE); } public void delete(String key) { redisTemplate.delete(key); } /** * Object轉(zhuǎn)成JSON數(shù)據(jù) */ private String toJson(Object object){ if(object instanceof Integer || object instanceof Long || object instanceof Float || object instanceof Double || object instanceof Boolean || object instanceof String){ return String.valueOf(object); } return JSON.toJSONString(object); } /** * JSON數(shù)據(jù),轉(zhuǎn)成Object */ private <T> T fromJson(String json, Class<T> clazz){ return JSON.parseObject(json, clazz); } }
3.在SpringBoot的配置文件中配置redis的服務(wù)器
(1).yml配置文件中
spring: redis: open: true # 是否開啟redis緩存 true開啟 false關(guān)閉 database: 0 host: redis服務(wù)器地址 port: redis服務(wù)器端口號(hào) password: redis服務(wù)器密碼 # 密碼(默認(rèn)為空) timeout: 15000 # 連接超時(shí)時(shí)長(zhǎng)(毫秒) jedis: pool: max-active: 1000 # 連接池最大連接數(shù)(使用負(fù)值表示沒(méi)有限制) max-wait: -1 # 連接池最大阻塞等待時(shí)間(使用負(fù)值表示沒(méi)有限制) max-idle: 10 # 連接池中的最大空閑連接 min-idle: 5 # 連接池中的最小空閑連接
(2).properties配置文件中
#### 連接redis非關(guān)系型數(shù)據(jù)庫(kù)配置 spring.redis.host=redis服務(wù)器地址 spring.redis.password=redis服務(wù)器密碼,默認(rèn)為空 spring.redis.port=redis服務(wù)器端口號(hào) spring.redis.timeout=20000 //超時(shí)時(shí)間 spring.redis.database=6 spring.redis.lettuce.pool.min-idle=0 spring.redis.lettuce.pool.max-idle=3000 spring.redis.lettuce.pool.max-wait=10000 spring.redis.lettuce.pool.max-active=3000
4.使用
還是補(bǔ)上使用的方法吧
1.存入數(shù)據(jù)的方法
/** * * @param key 同理map的key,可以根據(jù)對(duì)應(yīng)的key取到對(duì)應(yīng)的值 * @param value 要存入redis的數(shù)據(jù) * @param expire 超時(shí)時(shí)間,就是數(shù)據(jù)會(huì)在redis里面存多久,可以不傳,就是永不超時(shí) */ public void set(String key, Object value, long expire){ valueOperations.set(key, toJson(value)); if(expire != NOT_EXPIRE){ redisTemplate.expire(key, expire, TimeUnit.SECONDS); } }
2.取出數(shù)據(jù)的方法
/** * * @param key 存入數(shù)據(jù)時(shí),設(shè)置的key,根據(jù)可以取到對(duì)應(yīng)的數(shù)據(jù) * @return */ public String get(String key) { return get(key, NOT_EXPIRE); }
3.還有個(gè)刪除
就是調(diào)用delete方法,跟get方法一樣傳一個(gè)key過(guò)去,就可以刪除對(duì)應(yīng)的數(shù)據(jù)了
到此這篇關(guān)于SpringBoot中使用Redis的文章就介紹到這了,更多相關(guān)SpringBoot使用Redis內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java實(shí)現(xiàn)兩人五子棋游戲(五) 判斷是否有一方勝出
這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)兩人五子棋游戲,判斷是否有一方勝出,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-03-03java定時(shí)任務(wù)的實(shí)現(xiàn)方式
這篇文章主要介紹了java定時(shí)任務(wù)的實(shí)現(xiàn)方式,在應(yīng)用里經(jīng)常都有用到在后臺(tái)跑定時(shí)任務(wù)的需求,如何進(jìn)行java定時(shí)任務(wù),本文為大家進(jìn)行講解,感興趣的小伙伴們可以參考一下2016-02-02springboot實(shí)現(xiàn)登錄功能的完整步驟
這篇文章主要給大家介紹了關(guān)于springboot實(shí)現(xiàn)登錄功能的完整步驟,在web應(yīng)用程序中,用戶登錄權(quán)限驗(yàn)證是非常重要的一個(gè)步驟,文中通過(guò)代碼以及圖文介紹的非常詳細(xì),需要的朋友可以參考下2023-09-09SpringMVC請(qǐng)求參數(shù)的使用總結(jié)
在日常使用SpringMVC進(jìn)行開發(fā)的時(shí)候,有可能遇到前端各種類型的請(qǐng)求參數(shù),本文主要接介紹了SpringMVC請(qǐng)求參數(shù)的使用總結(jié),感興趣的可以了解一下2021-06-06spring-data-redis 動(dòng)態(tài)切換數(shù)據(jù)源的方法
最近遇到了一個(gè)麻煩的需求,我們需要一個(gè)微服務(wù)應(yīng)用同時(shí)訪問(wèn)兩個(gè)不同的 Redis 集群,一般情況下我們會(huì)怎么處理呢,下面通過(guò)場(chǎng)景分析給大家介紹spring-data-redis 動(dòng)態(tài)切換數(shù)據(jù)源的方法,感興趣的朋友一起看看吧2021-08-08SpringCloud Feign如何在遠(yuǎn)程調(diào)用中傳輸文件
這篇文章主要介紹了SpringCloud Feign如何在遠(yuǎn)程調(diào)用中傳輸文件,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-09-09