日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 万象百科 >内容正文

万象百科

Spring Boot如何整合Redis

發布時間:2023/11/24 万象百科 45 博士
生活随笔 收集整理的這篇文章主要介紹了 Spring Boot如何整合Redis 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Spring Boot是目前非常流行的Java Web開發框架,Redis是非關系型數據庫的一種,以鍵值對的形式存儲。Spring對Redis的支持是通過Spring Data Redis來實現的,給我們提供了RedisTemplate和StringRedisTemplate兩種模板來操作數據。Spring Boot框架也提供了對Redis的支持,下面我們來講一下Spring Boot框架整合Redis的步驟。 工具/材料 IntelliJ IDEA 操作方法 01 Spring Boot整合Redis我們需要添加依賴的jar包,spring-boot-starter-data-redis中包含spring和redis相關的jar包,jedis作為redis的客戶端也需要添加到工程中,Spring Boot的版本信息在父pom中已指定,子模塊中的spring相關的jar包無需另外指定。 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>3.0.0-m1</version> </dependency> 02 Spring Boot會根據application.properties中的配置對Redis的屬性進行自動配置,并注入到RedisProperties類中。在application.properties配置文件中這些屬性都是以spring.redis為前綴的,值得注意的是在Spring Boot 1.5.x版本中默認的Redis客戶端是jedis,因此在配置文件中無需指定,如下圖所示。 03 Spring Boot 1.5.x版本的整合配置網上可以搜索大量的文章,然而Spring Boot 2.x版本的整合資料卻非常少,甚至提供的配置不能正常使用,因此本文主要講解Spring Boot 2.x整合Redis以及Redis的使用情況。spring-boot 2.x版本有jedis和lettuce兩種客戶端,因此我們必須要去指定使用哪一種客戶端,兩個客戶端的配置如下圖所示,本文使用的是Jedis客戶端連接池,具體的配置如下。# Redis數據庫索引(默認為0)spring.redis.database=0# Redis服務器地址spring.redis.host=127.0.0.1# Redis服務器連接端口spring.redis.port=6379# Redis服務器連接密碼(默認為空)spring.redis.password=xylx1.t!@## 配置jedis連接池# 連接池最大連接數(使用負值表示沒有限制)spring.redis.jedis.pool.max-active=8# 連接池最大阻塞等待時間(使用負值表示沒有限制)spring.redis.jedis.pool.max-wait=-1ms# 連接池中的最大空閑連接spring.redis.jedis.pool.max-idle=8# 連接池中的最小空閑連接spring.redis.jedis.pool.min-idle=0# 連接超時時間(毫秒)spring.redis.timeout=5000ms由配置我們可以看到spring-boot 2.x版本時間設置需要加單位ms,因為參數的類型為Duration。另外spring.redis.timeout盡量不要配置0,否則可能會出現io.lettuce.core.RedisCommandTimeoutException: Command timed out超時錯誤。 04 配置文件編輯完成后,我們開始編寫代碼實現Redis數據的存儲和讀取。我們創建一個RedisUtil工具類,該類使用@Component注解表示交由Spring管理,StringRedisTemplate是Spring提供的,可以使用@Autowired注解直接注入,接下來便可以書寫存和取的代碼了。@Componentpublic class RedisUtil { @Autowired private StringRedisTemplate redisTemplate; /** * 存字符串 * @param key 緩存鍵 * @param value 緩存值 * @param expireTime 過期時間(s) */ public void setString(String key, String value, int expireTime){ ValueOperations<String, String> ops = redisTemplate.opsForValue(); if (expireTime != 0) { ops.set(key, value, expireTime, TimeUnit.SECONDS); } else { ops.set(key,value); } } /** * 取字符串 * @param key 緩存鍵 * @return 緩存值 */ public String getString(String key){ ValueOperations<String, String> ops = this.redisTemplate.opsForValue(); return ops.get(key); } 05 接下來我們編寫Controller層代碼去調用RedisUtil工具類,實現數據的存儲和讀取,代碼比較簡單可以參考下圖。若想驗證Redis是否可用,還需要編寫啟動類,如下圖所示。 06 由上圖可看到我們編寫了一個post請求用于存儲字符串,get請求用于取出字符串。啟動類通過main方法啟動應用,接下來我們使用postman去模擬瀏覽器調用post和get請求,由下圖可以看到Redis存儲的數據成功被取出。 07 接下來我們介紹Jedis,這是一個封裝了Redis的客戶端,在Spring Boot整合Redis的基礎上,可以提供更簡單的API操作。因此我們需要配置JedisPool的Bean,代碼如下,其中@Configuration注解表明這是一個配置類,我們在該類中注入RedisProperties,并且使用@Bean注解指定JedisPool。@Configurationpublic class RedisConfiguration { @Autowired private RedisProperties properties; @Bean public JedisPool getJedisPool(){ JedisPoolConfig config = new JedisPoolConfig(); config.setMaxIdle(properties.getJedis().getPool().getMaxIdle()); config.setMaxTotal(properties.getJedis().getPool().getMaxActive()); config.setMaxWaitMillis(properties.getJedis().getPool().getMaxWait().toMillis()); JedisPool pool = new JedisPool(config,properties.getHost(), properties.getPort(),100, properties.getPassword(), properties.getDatabase()); return pool; }} 08 接下來我們編輯JedisUtil工具類,通過SpringBoot容器的@Component注解來自動創建,并且注入JedisPool,使用jedisPool.getResource()方法來獲取Jedis,并最終實現操作redis數據庫,其代碼如下。@Componentpublic class JedisUtil { @Autowired JedisPool jedisPool; //獲取key的value值 public String get(String key) { Jedis jedis = jedisPool.getResource(); String str = ""; try { str = jedis.get(key); } finally { try { jedis.close(); } catch (Exception e) { e.printStackTrace(); } } return str; } public String set(String key, String value) { Jedis jedis = jedisPool.getResource(); String str = ""; try { str = jedis.set(key, value); } finally { try { jedis.close(); } catch (Exception e) { e.printStackTrace(); } } return str; }} 09 JedisUtil工具類編寫完成后,我們修改之前的RedisController,并注入JedisUtil,代碼如下圖所示。然后再用postman分別調用post和get接口,我們可以看到成功取到了新的key的value值。 特別提示 在Spring Boot整合Redis前本機需安裝Redis,另外可以使用RedisDesktopManager這個Redis這個桌面管理工具查看Redis中的數據。

總結

以上是生活随笔為你收集整理的Spring Boot如何整合Redis的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。