當前位置:
首頁 > 知識 > spring-boot-2.0.3之redis緩存實現

spring-boot-2.0.3之redis緩存實現

目錄

  • 前言
  • springboot1.5.9緩存配置
  • 工程實現
  • redis 怎樣保存cache
  • spring2.0.3緩存配置
  • 工程實現
  • redis 怎樣保存cache
  • 總結
  • 參考

回到頂部

前言

開心一刻

小白問小明:「你前面有一個5米深的坑,裡面沒有水,如果你跳進去後該怎樣出來了?」小明:「躺著出來唄,還能怎麼出來?」小白:「為什麼躺著出來?」小明:「5米深的坑,還沒有水,跳下去不死就很幸運了,殘是肯定會殘的,不躺著出來,那能怎麼出來?」小白:「假設沒死也沒殘呢?」小明:「你當我超人了? 那也簡單,把腦子裡的水放出來就可以漂出來了。」小白:「你腦子裡有這麼多水嗎?」小明:「我腦子裡沒那麼多水我跳下去幹嘛?」

路漫漫其修遠兮,吾將上下而求索!

github:https://github.com/youzhibing

碼雲(gitee):https://gitee.com/youzhibing

springboot 1.x到2.x變動的內容還是挺多的,而2.x之間也存在細微的差別,本文不講這些差別(具體差別我也不知道,汗......),只講1.5.9與2.0.3的redis緩存配置的區別

回到頂部

springboot1.5.9緩存配置

工程實現

1.x系列配置應該都差不多,下面我們看看1.5.9中,springboot集成redis的緩存實現

pom.xml

spring-boot-2.0.3之redis緩存實現

打開今日頭條,查看更多精彩圖片

View Code

application.yml

spring-boot-2.0.3之redis緩存實現

View Code

RedisCacheConfig.java

spring-boot-2.0.3之redis緩存實現

View Code

CacheServiceImpl.java

spring-boot-2.0.3之redis緩存實現

View Code

上述只講了幾個主要的文件,更多詳情請點springboot159-cache

redis 怎樣保存cache

大家一定要把工程仔細看一遍,不然下面出現的一些名稱會讓我們感覺不知從哪來的;

spring-boot-2.0.3之redis緩存實現

工程中的緩存分兩種:緩存管理器管理的緩存(也就是一些列註解實現的緩存)、redisTemplate操作的緩存

緩存管理器管理的緩存

會在redis中增加2條數據,一個是類型為 zset 的 緩存名~keys , 裡面存放了該緩存所有的key, 另一個是對應的key,值為序列化後的json;緩存名~keys可以理解成緩存空間,與我們平時所說的具體的緩存是不一樣的。另外對緩存管理器的一些設置(全局過期時間等)都會反映到緩存管理器管理的所有緩存上;上圖中的http://localhost:8888/getName和http://localhost:8888/listUser?pageNum=1&pageSize=3對應的是緩存管理器管理的緩存。

redisTemplate操作的緩存

會在redis中增加1條記錄,key - value鍵值對,與我們通過redis-cli操作緩存一樣;上圖中的http://localhost:8888/getUserName對應的是redisTemplate操作的緩存。

回到頂部

spring2.0.3緩存配置

工程實現

pom.xml

spring-boot-2.0.3之redis緩存實現

View Code

application.yml

spring-boot-2.0.3之redis緩存實現

View Code

緩存定製:RedisCacheManagerConfig.java

spring-boot-2.0.3之redis緩存實現

View Code

此類可不用配置,就用spring-boot自動配置的緩存管理器也行,只是在緩存的可閱讀性上會差一些。有興趣的朋友可以刪除此類試試。

CacheServiceImpl.java

spring-boot-2.0.3之redis緩存實現

View Code

更多詳情請點spring-boot-cache

redis 怎樣保存cache

我們來看圖說話,看看緩存在redis中是如何保存的

spring-boot-2.0.3之redis緩存實現

工程中的緩存分兩種:緩存管理器管理的緩存(也就是一些列註解實現的緩存)、redisTemplate操作的緩存

緩存管理器管理的緩存

會在redis中增加1條數據,key是以緩存空間開頭的字元串(緩存空間名::緩存key),值為序列化後的json;上圖中的http://localhost:8889/getName和http://localhost:8889/listUser?pageNum=1&pageSize=3對應的是緩存管理器管理的緩存。

redisTemplate操作的緩存

會在redis中增加1條記錄,key - value鍵值對,與我們通過redis-cli操作緩存一樣;上圖中的http://localhost:8889/getUserName對應的是redisTemplate操作的緩存。

回到頂部

總結

1、有時候我們引入spring-boot-starter-cache這個starter只是為了快速添加緩存依賴,目的是引入spring-context-support;如果我們的應用中中已經有了spring-context-support,那麼我們無需再引入spring-boot-starter-cache,例如我們的應用中依賴了spring-boot-starter-web,而spring-boot-starter-web中又有spring-context-support依賴,所以我們無需再引入spring-boot-starter-cache。

2、Supported Cache Providers,講了支持的緩存類型以及默認情況下的緩存載入方式,可以通讀下。

3、只要我們引入了redis依賴,並將redis的連接信息配置正確,springboot(2.0.3)根據我們的配置會給我們生成默認的緩存管理器和redisTemplate;我們也可以自定義我們自己的緩存管理器來替換掉默認的,只要我們自定義了緩存管理器和redisTemplate,那麼springboot的默認生成的會替換成我們自定義的。

4、緩存管理器對緩存的操作也是通過redisTemplate實現的,只是進行了統一的管理,並且能夠減少我么的代碼量,我們可以將更多的精力放到業務處理上。

5、redis-cli -h 127.0.0.1 -p 6379 -a 123456與redis-cli -a 123456兩種方式訪問到的數據完全不一致,好像操作不同的庫一樣! 這個需要注意,有空我回頭看看這兩者到底有啥區別,有知道的朋友可以留個言。

最後緬懷一下:金庸走了,再無江湖;IG捧杯了,再無LOL!感謝IG成就了我的完美謝幕,讓我的青春少了一份遺憾,謝謝!

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

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


請您繼續閱讀更多來自 程序員小新人學習 的精彩文章:

事務概念以及更新丟失的解決
如何利用DeepFM演算法設計推薦系統

TAG:程序員小新人學習 |