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

相關知識

常用 Spring Cache 緩存註解

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

目標

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

準備工作

創建表

DROP TABLE IF EXISTS `t_user`;
CREATE TABLE `t_user`  (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `user_name` varchar(64) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL,
  `level` tinyint(2) NULL DEFAULT NULL,
  `birth_day` date NULL DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 16 CHARACTER SET = utf8 COLLATE = utf8_bin ROW_FORMAT = Dynamic;

SET FOREIGN_KEY_CHECKS = 1;

操作步驟

添加依賴

 

配置

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

  • spring.cache.type 配置緩存類型,默認爲 simple,配置使用 redis 作爲緩存中間件,只需要配置 spring.cache.type 屬性爲 redis 即可

 

編碼

實體對象

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

 

Repository 層代碼

 

Service 層代碼

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

 

啓動類

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

 

驗證結果

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

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

源碼地址

本章源碼 :https://github.com/caiyuanzi-song/boot.git

結束語

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

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章