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 哨兵模式待更新