当前位置:首页 > 问答库 > Java基础知识 > 详情

Java大牛必会|分布式缓存实现方案之Spring Cache(二)

来源:千锋教育

发布:syq

2022-09-22

Java基础知识 分类问答库

推荐答案

  四. 基于Spring Cache实现缓存

  4.1 Spring Cache优点

15 (1)

  根据上图可知,Spring Cache具有如下优点:

  基于注解,代码清爽简洁;

  支持各种缓存:Spring Cache并非一种具体的缓存技术,而是基于各种缓存产品(如Guava、EhCache、Redis等)进行的一层封装,结合SpringBoot开箱即用的特性用起来会非常方便;

  可以实现复杂的逻辑;

  可以对缓存进行回滚

  4.2 Spring Cache包结构

16 (1)

17 (1)

  4.3 常用注解

  @Cacheable //查询

  @CachePut //增改

  @CacheEvict //删除

  @Caching //组合多个注解

  @CacheConfig //在类上添加,抽取公共配置

18 (1)

  4.4 代码实现

  4.4.1 配置类

01

  4.4.2service层实现类

20

  4.5 缺点

  任何一种技术都不是十全十美的,Spring Cache也不例外,它也有一些缺点,比如:

  不能保证数据的一致性:保存和修改数据是,是先修改数据库,然后再进行更新缓存。如果不满意延迟效果,可以不用cache ,用双删。

  过期进间配置:过期时间统一配置。

21 (1)

  五.缓存一致性问题

  我们在实现Redis缓存时,其实会存在缓存一致性的问题,比如下图所示:

22 (1)

  5.1 代码同步更新

  强一致性,但代码耦合高。

  5.2 代码异步更新

  有延迟,借助设计模式或者mq。

  5.3 缓存自己的TTL

  缓存有一定的延迟,可能造成缓存击穿,或者雪崩问题。

  5.4 用定时任务

  要把握好更新频率。

  六.分布式锁的实现

  6.1 实现流程

23 (1)

  解释说明:

  缓存击穿和雪崩可以用分布式解决。

  线程1,代码当前线程

  线程2,代表和线程1的同类线程。

  线程3,代表其它线程。

  6.2 实现代码

  6.2.1 核心代码

02

03

  6.2.2 测试CountDownLatch

25 (1)

26

  6.2.3测试结果

27 (1)

  七. 小结

  至此,小编就带大家利用Spring Cache实现了分布式缓存,我们在开发时要依据具体的业务逻辑具体地分析解决。其实在项目中并没有固定的格式,只要大家选择适合自己项目场景的方案即可。

更多问题在线答疑

导师线上坐镇
解答个性化学习难题

立即提问

上一篇

NullPointerException异常二番战|千锋老师给你一招搞定

下一篇

Java大牛必会|分布式缓存实现方案之Spring Cache(一)

相关问题

更多 >>
毕设新思路 | 精美的OA管理系统源码你不想要一份吗? 基于Spring体系,事务的特性和实现机制 j查询与javaScript有什么区别 NullPointerException异常二番战|千锋老师给你一招搞定 Java大牛必会|分布式缓存实现方案之Spring Cache(二) Java大牛必会|分布式缓存实现方案之Spring Cache(一)
热门问题
Java基础知识 Java培训机构 Java培训费用 Java培训时间 java培训课程 Java培训就业 零基础学Java java薪资待遇 java学习路线

全国咨询热线400-811-9990