1. 程式人生 > >spring boot以restful模式整合redis

spring boot以restful模式整合redis

 第一次寫部落格,如果哪裡有不足的地方,歡迎大家提出來,我會繼續改進。

這一次部落格內容主要是spring boot 整合redis, spring boot 也是最近出來的一個比較新的技術比起傳統的ssm ssh xml配置專案,會少很多xml配置,很簡潔優雅的配置在application.yml或application.properties中,好了下面是這次的內容。

 

以上是專案整體結構

以上,application.yml配置資訊,主要是下面redis配置資訊,由於我是安裝在本地

host則是127.0.0.1,

密碼設定的123456 ,

port預設6379,

maxIdle:控制一個pool最多有多少個狀態為idle的jedis例項,

minIdle:控制一個pool最少有多少個狀態為idle的jedis例項,

maxActive:控制一個pool可分配多少個jedis例項,

maxWait:等待時間

以上是配置,下面是實現的效果給大家看一下

現在redis中一個快取資料也沒有,請看下面圖。

我通過postman訪問請看下圖。

發現第一次訪問是查詢資料庫的,log中顯示了執行的sql且輸出了方法中的log,但redis中已經有了快取資料請看下圖

那麼我們清楚後臺log 在重新訪問一次看看效果,以下是效果圖,並無sql執行,且方法都沒有進,但是資料卻返回回來了。

以上現象說明第一次訪問時候會查詢資料庫,並寫入快取,第二次請求時候會先判斷該快取中是否存在,沒有則執行方法,有則不執行方法直接從快取中獲取資料返回,下面會介紹通過註解使用的redis快取,看下圖

紅線就是剛才走的方法使用的註解是@Cacheable 這個註解裡面有很多引數詳細可以百度一下,本文中使用的是cacheNames和key,cacheNames則是快取的名字,key則是使用springEl表示式從下面的引數取的#id,為什麼這麼寫呢則是通過傳的引數id主鍵查詢生成唯一的快取key好儲存資料,畢竟一個使用者對應一個id。Cacheable的作用是請求時候先判斷是否快取中存在,沒有則執行方法,存在的話不執行方法直接返回快取中資料。

下面還有

@CachePut(cacheNames="user", key="#user.id"),@CacheEvict(cacheNames="user", key="#id")

CachePut則可以理解跟map中的put方法類似,請求時候直接根據key儲存到快取中,@CacheEvict一般是執行刪除方法使用的,根據key刪除相應快取資料。

為什麼要用快取呢,舉個例子,假如系統中有2千萬使用者資訊,使用者資訊基本固定,一旦錄入很少變動, 那麼你每次載入所有使用者資訊時,如果都要請求資料庫,資料庫編譯並執行你的查詢語句,如果使用快取則只第一次查詢訪問資料庫,再次請求時候不會在請求資料庫了,從而提升效能效率。

本文存屬學習參考。