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)過期時(shí)長(zhǎng),單位:秒 */
public final static long DEFAULT_EXPIRE = 60 * 60 * 24;
/** 不設(shè)置過期時(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ù)值表示沒有限制) max-wait: -1 # 連接池最大阻塞等待時(shí)間(使用負(fù)值表示沒有限制) 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過去,就可以刪除對(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-03
java定時(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-02
springboot實(shí)現(xiàn)登錄功能的完整步驟
這篇文章主要給大家介紹了關(guān)于springboot實(shí)現(xiàn)登錄功能的完整步驟,在web應(yīng)用程序中,用戶登錄權(quán)限驗(yàn)證是非常重要的一個(gè)步驟,文中通過代碼以及圖文介紹的非常詳細(xì),需要的朋友可以參考下2023-09-09
SpringMVC請(qǐng)求參數(shù)的使用總結(jié)
在日常使用SpringMVC進(jìn)行開發(fā)的時(shí)候,有可能遇到前端各種類型的請(qǐng)求參數(shù),本文主要接介紹了SpringMVC請(qǐng)求參數(shù)的使用總結(jié),感興趣的可以了解一下2021-06-06
spring-data-redis 動(dòng)態(tài)切換數(shù)據(jù)源的方法
最近遇到了一個(gè)麻煩的需求,我們需要一個(gè)微服務(wù)應(yīng)用同時(shí)訪問兩個(gè)不同的 Redis 集群,一般情況下我們會(huì)怎么處理呢,下面通過場(chǎng)景分析給大家介紹spring-data-redis 動(dòng)態(tài)切換數(shù)據(jù)源的方法,感興趣的朋友一起看看吧2021-08-08
SpringCloud Feign如何在遠(yuǎn)程調(diào)用中傳輸文件
這篇文章主要介紹了SpringCloud Feign如何在遠(yuǎn)程調(diào)用中傳輸文件,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-09-09

