解析SpringBoot整合SpringDataRedis的過程
Spring-Data-Redis項目(簡稱SDR)對Redis的Key-Value數(shù)據(jù)存儲操作提供了更高層次的抽象,類似于Spring Framework對JDBC支持一樣。
項目主頁: http://projects.spring.io/spring-data-redis/
項目文檔: http://docs.spring.io/spring-data/redis/docs/1.5.0.RELEASE/reference/html/
本文給大家介紹SpringBoot整合SpringDataRedis的過程。
項目環(huán)境:Jdk11.0.2、Redis3.0.0、Centos7
一、安裝Redis3.0.0
在Linux下解壓redis安裝包
進入解壓后的目錄進行編譯
編譯完成
將redis安裝到指定目錄
啟動redis
默認(rèn)端口Port:6379
屬于前置啟動,會占用整個終端,按Ctrl+C停止
后置啟動,將redis.conf復(fù)制到redis/bin目錄下
修改復(fù)制后的配置文件,將no該為yes
Centos7開放端口
啟動redis 查看redis是否啟動成功
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ǎ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中已過時 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對象
不推薦該種方式存取java對象,會造成空間浪費,使用json字符串格式存取會更好
/** * @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對象
/** * @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單機應(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 #連接超時時間 #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 # 連接池最大阻塞等待時間 默認(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)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
spring mvc中直接注入的HttpServletRequst安全嗎
這篇文章主要給大家介紹了關(guān)于spring mvc中直接注入的HttpServletRequst是不是安全的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起看看吧。2018-04-04mybatis報錯元素內(nèi)容必須由格式正確的字符數(shù)據(jù)或標(biāo)記組成異常的解決辦法
今天小編就為大家分享一篇關(guān)于mybatis查詢出錯解決辦法,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2018-12-12JavaWeb HttpServletResponse對象及常用方法
這篇文章主要介紹了JavaWeb-HttpServletResponse對象,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-03-03java?11新特性HttpClient主要組件及發(fā)送請求示例詳解
這篇文章主要為大家介紹了java?11新特性HttpClient主要組件及發(fā)送請求示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-06-06