Spring Boot使用Redis做緩存
Redis
Spring Boot
Java
相關文章:
《Redis3.2.9單機版安裝》
《基於Redis的消息隊列之生產消費者模式(明天寫發布/訂閱模式)》
《基於Redis的消息隊列之發布訂閱模式》——這個是我很久之前在工作中用到的寫法,是傳統的Spring架構。
其實Spring Boot自己就有一個基於Redis的發布訂閱模式的消息隊列的實現,相比使用RabbitMQ,更為輕量。
大家可以去Spring Boot官網找來看看。我之前寫了基於RabbitMQ的消息隊列《Spring Cloud消息隊列》,所以基於Redis的MQ文章就不寫了。
相關配置
pom.xml
application.yml
都很好理解,就不解釋了。
Redis配置類
1
請注意一下keyGenerator這個方法,後面有提到。
2
在這裡我們將Key設置為String,Value設置為JSON格式。
Redis工具類
1
2
工具類主要是給開發人員手工操作Redis用,可以根據實際工作進行擴展,這裡就寫了常用的幾種操作。
手工操作示例
Controller
在這裡我們向RedisSet了兩條數據,一條沒有設置有效時間,一條設置了(圖上寫的是5,真正例子中是60)。
執行一下,查詢Redis結果如下:
永久有效
設置了失效時間
注意看二者TTL的不同。
自動緩存
在Application類上增加@EnableCaching這個註解。
創建一個UserService,增加方法如下:
Service
Controller增加如下方法:
Controller
訪問頁面兩次,後台日誌如下:
日誌
可以看出,第一次因為Redis里沒有ID為1的User,執行了Service的方法——在實際工程中,Service應執行Dao或Mapper,從DB取數據。
第二次,因為取的數據已經放入Redis了,則沒有執行Service。
Redis里的數據是這樣的:
Key是由RedisCfg的keyGenerator生成的,查看代碼可以知道,其實就是將類名、方法名、參數拼起來。
但是在實際工作中有一個問題:當我們對某條數據進行修改、刪除的時候,這條數據也應該從Redis里刪除。
這時候就需要你在代碼里指定Key。可是如果在修改、刪除的方法中使用keyGenerator生成的Key與獲取對象那個方法生成的的Key是不一致的,這個很好理解吧。
所以我們要改一下Key的生成方式。
修改Service:
Service
注意看紅框,要一一對應。本例就寫了update方法,delete方法的註解寫法相同。
注意兩個方法用的註解。
Controller:
Controller
按順序訪問:1獲取對象>2獲取對象>3修改對象>4獲取對象>5獲取對象。
後台日誌如下:
日誌
Redis里的數據如下:
Redis
下一篇準備講講Spring Boot結合Shiro,由Redis管理分散式Session的實現。
※Spring Boot使用AOP
※Spring Boot自定義Logback
※Docker掛載主機目錄(基於Tomcat)
※Docker與主機互傳文件(基於Tomcat)
※Spring Cloud Feign重試
TAG:Java個人學習心得 |