SpringBoot2.0實戰(23)整合Redis之集成緩存SpringDataCache

SpringBoot2.0實戰(23)整合Redis之集成緩存SpringDataCache

相關知識

常用 Spring Cache 緩存註解

  • @CacheConfig 在類上設置當前緩存的一些公共設置,比如緩存名稱。
  • @Cacheable 作用在方法上,表明該方法的結果可以緩存,如果緩存存在,則目標方法不會被調用,直接從緩存中獲取,如果緩存不存在,則執行方法體,並將結果存入緩存。
  • @CacheEvice 作用在方法上,刪除緩存項或者清空緩存。
  • @CachePut 作用在方法上,不管緩存是否存在,都會執行方法體,並將結果存入緩存。
  • @Caching 作用在方法上,以上的註解如果需要同時註解多個,可以包在 @Caching 內

目標

使用 Redis 作為緩存,實現對數據庫進行增刪改時,同步更新數據至緩存,查詢時優先從緩存中查找。

準備工作

創建表

SpringBoot2.0實戰(23)整合Redis之集成緩存SpringDataCache

操作步驟

添加依賴

引入 Spring Boot Starter 父工程

SpringBoot2.0實戰(23)整合Redis之集成緩存SpringDataCache

添加 redis、jpa 及 mysql 的依賴,添加後的整體依賴如下

SpringBoot2.0實戰(23)整合Redis之集成緩存SpringDataCache

配置

數據源、Redis、緩存進行配置。

  • spring.cache.type 配置緩存類型,默認為 simple,配置使用 redis 作為緩存中間件,只需要配置 spring.cache.type 屬性為 redis 即可
SpringBoot2.0實戰(23)整合Redis之集成緩存SpringDataCache

編碼

實體對象

因為 Redis 初始化時,默認使用的序列化類是 JdkSerializationRedisSerializer,所以需要實體對象實現 Serializable 接口。

SpringBoot2.0實戰(23)整合Redis之集成緩存SpringDataCache

Repository 層代碼

SpringBoot2.0實戰(23)整合Redis之集成緩存SpringDataCache

Service 層代碼

對增刪查改方法添加緩存註解

SpringBoot2.0實戰(23)整合Redis之集成緩存SpringDataCache

啟動類

在啟動類上添加 @EnableCaching 註解,用於開啟緩存

SpringBoot2.0實戰(23)整合Redis之集成緩存SpringDataCache

驗證結果

編寫測試用例

SpringBoot2.0實戰(23)整合Redis之集成緩存SpringDataCache

將 UserService 中的緩存相關注解全部註釋,執行測試用例,日誌顯示如下:

SpringBoot2.0實戰(23)整合Redis之集成緩存SpringDataCache

恢復緩存註解,再次執行測試用例,日誌顯示如下:

SpringBoot2.0實戰(23)整合Redis之集成緩存SpringDataCache

可以看到,使用緩存之後,根據用戶ID獲取用戶數據時,並不執行SQL。

去到 Redis 進行查看,可以看到當前的 Redis Key 為 user::12,其中 12 為用戶的 ID

源碼地址

本章源碼 : https://gitee.com/gongm_24/spring-boot-tutorial.git

結束語

數據庫一直都是系統高性能的一個瓶頸,合理正確地使用緩存,可以大大提升系統性能。

但是隨之而來的是系統複雜度提高,有更多的問題需要處理,比如緩存一致性,緩存穿透,緩存雪崩等。


分享到:


相關文章: