*(00)*

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  613 随笔 :: 0 文章 :: 45 评论 :: 159万 阅读
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

SpringBoot2.0实战(23)整合Redis之集成缓存SpringDataCache

来源:https://www.toutiao.com/a6803168397090619908/?timestamp=1584450221&app=news_article_lite&group_id=6803168397090619908&req_id=202003172103410100150440391024E2BA

死牛胖子 2020-03-12 12:07:56
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

结束语

数据库一直都是系统高性能的一个瓶颈,合理正确地使用缓存,可以大大提升系统性能。

但是随之而来的是系统复杂度提高,有更多的问题需要处理,比如缓存一致性,缓存穿透,缓存雪崩等。

 

 

 

posted on   *(00)*  阅读(356)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示