解析SpringBoot整合SpringDataRedis的過程
Spring-Data-Redis項(xiàng)目(簡稱SDR)對(duì)Redis的Key-Value數(shù)據(jù)存儲(chǔ)操作提供了更高層次的抽象,類似于Spring Framework對(duì)JDBC支持一樣。
項(xiàng)目主頁: http://projects.spring.io/spring-data-redis/
項(xiàng)目文檔: http://docs.spring.io/spring-data/redis/docs/1.5.0.RELEASE/reference/html/
本文給大家介紹SpringBoot整合SpringDataRedis的過程。
項(xiàng)目環(huán)境:Jdk11.0.2、Redis3.0.0、Centos7
一、安裝Redis3.0.0
在Linux下解壓redis安裝包


進(jìn)入解壓后的目錄進(jìn)行編譯

編譯完成

將redis安裝到指定目錄

啟動(dòng)redis

默認(rèn)端口Port:6379
屬于前置啟動(dòng),會(huì)占用整個(gè)終端,按Ctrl+C停止
后置啟動(dòng),將redis.conf復(fù)制到redis/bin目錄下

修改復(fù)制后的配置文件,將no該為yes


Centos7開放端口

啟動(dòng)redis 查看redis是否啟動(dòng)成功

IDEA客戶端工具連接redis服務(wù)成功

二、整合SpringDataRedis
1.修改pom.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.example</groupId>
<artifactId>springboot-redis</artifactId>
<version>1.0-SNAPSHOT</version>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.6.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<!-- SpringDataRedis2.x已不使用jedis 如需要jedis,需手動(dòng)導(dǎo)入 -->
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>3.3.0</version>
</dependency>
</dependencies>
</project>
2.創(chuàng)建RedisConfig配置類
jedis中的源碼:

/**
* @Author: kenewstar
* @Description: Redis配置類
* @Date:Created in 2020/6/27
*/
@Configuration
public class RedisConfig {
//連接池
@Bean
public JedisPoolConfig jedisPoolConfig(){
JedisPoolConfig config = new JedisPoolConfig();
//最大空閑數(shù)(默認(rèn)8)
config.setMaxIdle(12);
//最小空閑數(shù)(默認(rèn)0)
config.setMinIdle(6);
//最大連接數(shù)(默認(rèn)8)
config.setMaxTotal(24);
return config;
}
/**
* SpringDataRedis2.x版本已廢棄使用jedis
* @param config
* @return
*/
@Bean
public JedisConnectionFactory jedisConnectionFactory(JedisPoolConfig config){
JedisConnectionFactory factory = new JedisConnectionFactory();
//不推薦使用,SpringDataRedis2.x中已過時(shí)
factory.setPoolConfig(config);
factory.setHostName("192.168.40.128"); //redis服務(wù)的ip
factory.setPort(6379); //redis服務(wù)的端口
return factory;
}
//redis操作類
@Bean
public RedisTemplate<String,Object> redisTemplate(JedisConnectionFactory factory){
RedisTemplate<String,Object> redisTemplate = new RedisTemplate<>();
redisTemplate.setConnectionFactory(factory);
//設(shè)置key/value的序列化器
redisTemplate.setKeySerializer(new StringRedisSerializer());
redisTemplate.setValueSerializer(new StringRedisSerializer());
return redisTemplate;
}
}
Redis序列化器

3.創(chuàng)建Redis測試類
/**
* @Author: kenewstar
* @Description: 測試redis操作
* @Date:Created in 2020/6/27
*/
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes = App.class)
public class TestRedisString {
@Autowired
private RedisTemplate<String,Object> redisTemplate;
@Test
public void set(){
this.redisTemplate.opsForValue().set("name","muke");
}
@Test
public void get(){
Object name = this.redisTemplate.opsForValue().get("name");
System.out.println(name);
}
}
三、SpringDataRedis存取Java對(duì)象
不推薦該種方式存取java對(duì)象,會(huì)造成空間浪費(fèi),使用json字符串格式存取會(huì)更好
/**
* @Author: kenewstar
* @Description: 測試redis操作
* @Date:Created in 2020/6/27
*/
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes = App.class)
public class TestRedisString {
@Autowired
private RedisTemplate<String,Object> redisTemplate;
@Test
public void setObject(){
User user = new User();
user.setId(1);
user.setName("kenewstar");
user.setAge(21);
this.redisTemplate.setValueSerializer(new JdkSerializationRedisSerializer());
this.redisTemplate.opsForValue().set("user",user);
}
@Test
public void getObject(){
this.redisTemplate.setValueSerializer(new JdkSerializationRedisSerializer());
User user = (User)this.redisTemplate.opsForValue().get("user");
System.out.println(user);
}
}
四、SpringDataRedis存取Json格式的Java對(duì)象
/**
* @Author: kenewstar
* @Description: 測試redis操作
* @Date:Created in 2020/6/27
*/
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes = App.class)
public class TestRedisString {
@Autowired
private RedisTemplate<String,Object> redisTemplate;
@Test
public void setJsonObject(){
User user = new User();
user.setId(2);
user.setName("kenewstar2");
user.setAge(22);
this.redisTemplate.setValueSerializer(new Jackson2JsonRedisSerializer<>(User.class));
this.redisTemplate.opsForValue().set("userJson",user);
}
@Test
public void getJsonObject(){
this.redisTemplate.setValueSerializer(new Jackson2JsonRedisSerializer<>(User.class));
User user = (User) this.redisTemplate.opsForValue().get("userJson");
System.out.println(user);
}
}
五、SpringDataRedis2.x中的配置
1.創(chuàng)建application.yml全局配置文件
將redis數(shù)據(jù)庫連接信息與連接池信息配置在全局配置文件中
#redis單機(jī)應(yīng)用環(huán)境配置
spring:
redis:
host: 192.168.40.128
port: 6379
password: #無密碼不配置
database: 0 #數(shù)據(jù)庫索引(0-15)默認(rèn)為0
timeout: 300s #連接超時(shí)時(shí)間
#redis連接池配置
jedis:
pool:
max-idle: 16 #最大空閑數(shù)(默認(rèn)8)
min-idle: 4 #最小空閑數(shù)(默認(rèn)0)
max-active: 20 #最大連接數(shù)(默認(rèn)8)
max-wait: 60000ms # 連接池最大阻塞等待時(shí)間 默認(rèn)-1ms (-1 :表示沒有限制) 這里設(shè)置1分鐘
2.創(chuàng)建RedisConfig配置類
/**
* @Author: kenewstar
* @Description: Redis配置類
* @Date:Created in 2020/6/27
*/
@Configuration
public class RedisConfig {
@Bean
public RedisTemplate<String,Object> redisTemplate(RedisConnectionFactory factory){
RedisTemplate<String,Object> redisTemplate = new RedisTemplate<>();
redisTemplate.setConnectionFactory(factory);
redisTemplate.setKeySerializer(new StringRedisSerializer());
redisTemplate.setValueSerializer(new StringRedisSerializer());
return redisTemplate;
}
}
3.測試SpringDataRedis,代碼與上述代碼測試代碼相同,在這就不給大家重復(fù)介紹了。
總結(jié)
到此這篇關(guān)于SpringBoot整合SpringDataRedis的文章就介紹到這了,更多相關(guān)SpringBoot整合SpringDataRedis內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
基于Jasypt對(duì)SpringBoot配置文件加密
這篇文章主要介紹了基于Jasypt對(duì)SpringBoot配置文件加密,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-11-11
IDEA maven項(xiàng)目中刷新依賴的兩種方法小結(jié)
這篇文章主要介紹了IDEA maven項(xiàng)目中刷新依賴的兩種方法小結(jié),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-03-03
Java多線程之線程通信生產(chǎn)者消費(fèi)者模式及等待喚醒機(jī)制代碼詳解
這篇文章主要介紹了Java多線程之線程通信生產(chǎn)者消費(fèi)者模式及等待喚醒機(jī)制代碼詳解,具有一定參考價(jià)值,需要的朋友可以了解下。2017-10-10
Sparsearray稀疏數(shù)組原理及實(shí)例詳解
這篇文章主要介紹了Sparsearray稀疏數(shù)組原理及實(shí)例詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-05-05
SpringBoot中@Autowired與@Resource的區(qū)別小結(jié)
本文主要介紹了SpringBoot中@Autowired與@Resource的區(qū)別小結(jié),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2025-01-01
Java 實(shí)戰(zhàn)項(xiàng)目之在線點(diǎn)餐系統(tǒng)的實(shí)現(xiàn)流程
讀萬卷書不如行萬里路,只學(xué)書上的理論是遠(yuǎn)遠(yuǎn)不夠的,只有在實(shí)戰(zhàn)中才能獲得能力的提升,本篇文章手把手帶你用java+SSM+jsp+mysql+maven實(shí)現(xiàn)一個(gè)在線點(diǎn)餐系統(tǒng),大家可以在過程中查缺補(bǔ)漏,提升水平2021-11-11

