當前位置:
首頁 > 知識 > Spring Boot使用Redis做緩存

Spring Boot使用Redis做緩存

Spring Boot使用Redis做緩存

Redis

Spring Boot使用Redis做緩存

Spring Boot

Spring Boot使用Redis做緩存

Java

相關文章:

《Redis3.2.9單機版安裝》

《基於Redis的消息隊列之生產消費者模式(明天寫發布/訂閱模式)》

《基於Redis的消息隊列之發布訂閱模式》——這個是我很久之前在工作中用到的寫法,是傳統的Spring架構。

其實Spring Boot自己就有一個基於Redis的發布訂閱模式的消息隊列的實現,相比使用RabbitMQ,更為輕量。

大家可以去Spring Boot官網找來看看。我之前寫了基於RabbitMQ的消息隊列《Spring Cloud消息隊列》,所以基於Redis的MQ文章就不寫了。


相關配置

Spring Boot使用Redis做緩存

pom.xml

Spring Boot使用Redis做緩存

application.yml

都很好理解,就不解釋了。

Redis配置類

Spring Boot使用Redis做緩存

1

請注意一下keyGenerator這個方法,後面有提到。

Spring Boot使用Redis做緩存

2

在這裡我們將Key設置為String,Value設置為JSON格式。

Redis工具類

Spring Boot使用Redis做緩存

1

Spring Boot使用Redis做緩存

2

工具類主要是給開發人員手工操作Redis用,可以根據實際工作進行擴展,這裡就寫了常用的幾種操作。


手工操作示例

Spring Boot使用Redis做緩存

Controller

在這裡我們向RedisSet了兩條數據,一條沒有設置有效時間,一條設置了(圖上寫的是5,真正例子中是60)。

執行一下,查詢Redis結果如下:

Spring Boot使用Redis做緩存

永久有效

Spring Boot使用Redis做緩存

設置了失效時間

注意看二者TTL的不同。


自動緩存

在Application類上增加@EnableCaching這個註解。

創建一個UserService,增加方法如下:

Spring Boot使用Redis做緩存

Service

Controller增加如下方法:

Spring Boot使用Redis做緩存

Controller

訪問頁面兩次,後台日誌如下:

Spring Boot使用Redis做緩存

日誌

可以看出,第一次因為Redis里沒有ID為1的User,執行了Service的方法——在實際工程中,Service應執行Dao或Mapper,從DB取數據。

第二次,因為取的數據已經放入Redis了,則沒有執行Service。

Redis里的數據是這樣的:

Spring Boot使用Redis做緩存

Key是由RedisCfg的keyGenerator生成的,查看代碼可以知道,其實就是將類名、方法名、參數拼起來。

但是在實際工作中有一個問題:當我們對某條數據進行修改、刪除的時候,這條數據也應該從Redis里刪除。

這時候就需要你在代碼里指定Key。可是如果在修改、刪除的方法中使用keyGenerator生成的Key與獲取對象那個方法生成的的Key是不一致的,這個很好理解吧。

所以我們要改一下Key的生成方式。

修改Service:

Spring Boot使用Redis做緩存

Service

注意看紅框,要一一對應。本例就寫了update方法,delete方法的註解寫法相同。

注意兩個方法用的註解。

Controller:

Spring Boot使用Redis做緩存

Controller

按順序訪問:1獲取對象>2獲取對象>3修改對象>4獲取對象>5獲取對象。

後台日誌如下:

Spring Boot使用Redis做緩存

日誌

Redis里的數據如下:

Spring Boot使用Redis做緩存

Redis

下一篇準備講講Spring Boot結合Shiro,由Redis管理分散式Session的實現。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 Java個人學習心得 的精彩文章:

Spring Boot使用AOP
Spring Boot自定義Logback
Docker掛載主機目錄(基於Tomcat)
Docker與主機互傳文件(基於Tomcat)
Spring Cloud Feign重試

TAG:Java個人學習心得 |