您好,登錄后才能下訂單哦!
小編給大家分享一下SpringBoot整合SpringDataRedis的全過程分析,希望大家閱讀完這篇文章后大所收獲,下面讓我們一起去探討方法吧!
Spring-Data-Redis項目(簡稱SDR)對Redis的Key-Value數據存儲操作提供了更高層次的抽象,類似于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的過程。
項目環境:Jdk11.0.2、Redis3.0.0、Centos7
一、安裝Redis3.0.0
在Linux下解壓redis安裝包
進入解壓后的目錄進行編譯
編譯完成
將redis安裝到指定目錄
啟動redis
默認端口Port:6379
屬于前置啟動,會占用整個終端,按Ctrl+C停止
后置啟動,將redis.conf復制到redis/bin目錄下
修改復制后的配置文件,將no該為yes
Centos7開放端口
啟動redis 查看redis是否啟動成功
IDEA客戶端工具連接redis服務成功
二、整合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,需手動導入 --> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>3.3.0</version> </dependency> </dependencies> </project>
2.創建RedisConfig配置類
jedis中的源碼:
/** * @Author: kenewstar * @Description: Redis配置類 * @Date:Created in 2020/6/27 */ @Configuration public class RedisConfig { //連接池 @Bean public JedisPoolConfig jedisPoolConfig(){ JedisPoolConfig config = new JedisPoolConfig(); //最大空閑數(默認8) config.setMaxIdle(12); //最小空閑數(默認0) config.setMinIdle(6); //最大連接數(默認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服務的ip factory.setPort(6379); //redis服務的端口 return factory; } //redis操作類 @Bean public RedisTemplate<String,Object> redisTemplate(JedisConnectionFactory factory){ RedisTemplate<String,Object> redisTemplate = new RedisTemplate<>(); redisTemplate.setConnectionFactory(factory); //設置key/value的序列化器 redisTemplate.setKeySerializer(new StringRedisSerializer()); redisTemplate.setValueSerializer(new StringRedisSerializer()); return redisTemplate; } }
Redis序列化器
3.創建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.創建application.yml全局配置文件
將redis數據庫連接信息與連接池信息配置在全局配置文件中
#redis單機應用環境配置 spring: redis: host: 192.168.40.128 port: 6379 password: #無密碼不配置 database: 0 #數據庫索引(0-15)默認為0 timeout: 300s #連接超時時間 #redis連接池配置 jedis: pool: max-idle: 16 #最大空閑數(默認8) min-idle: 4 #最小空閑數(默認0) max-active: 20 #最大連接數(默認8) max-wait: 60000ms # 連接池最大阻塞等待時間 默認-1ms (-1 :表示沒有限制) 這里設置1分鐘
2.創建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,代碼與上述代碼測試代碼相同,在這就不給大家重復介紹了。
看完了這篇文章,相信你對SpringBoot整合SpringDataRedis的全過程分析有了一定的了解,想了解更多相關知識,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。