SpringBoot(十一): Spring Boot集成Redis


 

1、在 pom.xml 中配置相關的 jar 依賴;

<!--  加載 spring  boot  redis 包  -->

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-data-redis</artifactId>

</dependency>

2、在  Springboot  核心配置文件  application.properties  中配置

#配置redis
spring.redis.host=localhost
spring.redis.password=
spring.redis.port=6379

3、配置了上面的步驟,Spring boot 將自動配置 RedisTemplate,在需要操作 redis 的類中注入 redisTemplate; 在使用的類中注入:

@Autowired

private  RedisTemplate<String,  String>  redisTemplate;

@Autowired

private  RedisTemplate<Object,  Object>  redisTemplate;

spring  boot  幫我們注入的  redisTemplate  類,泛型里面只能寫<String, String>、<Object, Object>

復用上一章集成mybatis的代碼

啟動測試發現報錯,讓你后將對對象序列化

 

生成序列化ID方法如下:

點擊即可生成,或者使用快捷鍵Alt+Enter

5-2 Spring Boot  集成 Redis 測試啟動程序,進行訪問測試;

設置 key 的序列化方式為字符串,增強 key 的可讀性;

 

訪問Controller

查看redis

 

5-3  高並發條件下緩存穿透問題分析

在項目中使用緩存通常是先檢查緩存中是否存在,如果存在直接返回緩存內容,如果不存在就直接查詢數據庫,然后將查詢出來的數據緩

存到緩存中,最終返回查詢結果; 但是如果大量用戶請求查詢的某一個數據,而該數據在緩存中不存

在,就會造成大量的用戶請求都去查詢 DB,這樣緩存就失去了意義,在並發流量大時,可能導致 DB 壓力過大而失去響應;

5-4  高並發條件下緩存穿透問題復現

按照常規的代碼實現方式,多線程並發條件下多個請求落入到了數據庫;

5-5  高並發條件下緩存穿透問題處理

通過鎖機制,避免請求穿透緩存直接落入到數據庫;

解決方式一: 加synchronized  但是這樣會導致效率很低,不推薦使用!

解決方法二:雙重檢測機制 (如果集群的項目,可以了解一下分布式鎖)

 

5-6  高並發條件下緩存穿透問題測試

運行程序,觀察是否有多個請求落入到數據庫;

 Redis 哨兵模式待更新


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM