springboot2.x基础教程:SpringCache缓存抽象详解与Ehcache、Redis缓存配置实战

在计算机发展史中一台计算机只需要外部存储器就能运行,但是在实际中磁盘的读取数据的速度往往跟不上CPU的运算速度,因此引入的内存作为CPU和外部存储器之间的缓冲区域。
在项目开发过程数据库数据的查询速度远远比不上数据在内存中的访问速度,因此我们通常使用缓存来提高热点数据的访问速度,缓存可谓是计算机科学中最伟大的发明。

缓存基本知识

缓存命中率

命中率=从缓存中读取的速度/总读取次数(从缓存读取次数+从慢速设备读取次数)
Miss率=没有从缓存中读取的速度/总读取次数(从缓存读取次数+从慢速设备读取次数)

这是一个缓存非常重要的一个性能指标,往往命中率越高表示缓存作用越大

缓存策略

移除策略,即如果缓存满了,如何从缓存中移除数据的策略

  1. FIFO(First in First Out):先进先出算法,即先放入缓存的数据先被移除
  2. LRU(Least Recently used):最久未使用的数据优先被有限移除
  3. LFU(Least Frequently used): 最少被使用的数据有限被移除

缓存设置参数

  1. TTL(Time To live): 存活期,即从缓存中创建时间点开始直到它到期的一个时间段(不管在这个时间段内有没有访问都将过期)
  2. TTI(Time To Idle): 空闲期,即一个数据多久没被访问将从缓存中移除的时间。
  3. 最多被缓存的元素

Spring注解缓存

Spring 3.1之后,引入了注解缓存技术,其本质上不是一个具体的缓存实现方案,而是一个对缓存使用的抽象,通过在既有代码中添加少量自定义的各种annotation,即能够达到使用缓存对象和缓存方法的返回对象的效果。Spring的缓存技术具备相当的灵活性,不仅能够使用SpEL(Spring Expression Language)来定义缓存的key和各种condition,还提供开箱即用的缓存临时存储方案,也支持和主流的专业缓存集成。其特点总结如下:

  1. 少量的配置annotation注释即可使得既有代码支持缓存;
  2. 支持开箱即用,不用安装和部署额外的第三方组件即可使用缓存;
  3. 支持Spring Express Language(SpEL),能使用对象的任何属性或者方法来定义缓存的key和使用规则条件;
  4. 支持自定义key和自定义缓存管理者,具有相当的灵活性和可扩展性。

缓存相关注解

注解 说明 配置参数
@Cacheable 根据方法的请求参数对其结果进行缓存 value:缓存的名称;key:缓存的 key,可以为空,也可按照SpEL 表达式编写,如果不指定,则默认按照方法的所有参数进行组合; condition:缓存的条件,可以为空,使用 SpEL 编写,返回 true 或者 false,只有为 true 才进行缓存
@CachePut 根据方法的请求参数对其结果进行缓存,和 @Cacheable 不同的是,它每次都会触发真实方法的调用 value:缓存的名称;key:缓存的 key,可以为空,也可按照SpEL 表达式编写,如果不指定,则默认按照方法的所有参数进行组合; condition:缓存的条件,可以为空,使用 SpEL 编写,返回 true 或者 false,只有为 true 才进行缓存
@CacheEvict 够根据一定的条件对缓存进行清空 value:缓存的名称;key:缓存的 key,可以为空,也可按照SpEL 表达式编写,如果不指定,则默认按照方法的所有参数进行组合;condition:缓存的条件,可以为空,使用 SpEL 编写,返回 true 或者 false,只有为 true 才进行缓存; allEntries:是否清空所有缓存内容,默认为 false,如果指定为 true,则方法调用后将立即清空所有缓存; beforeInvocation:是否在方法执行前就清空,默认为 false,如果指定为 true,则在方法还没有执行的时候就清空缓存,默认情况下,如果方法执行抛出异常,则不会清空缓存

集成Ehcache缓存

EhCache是一个比较成熟的Java缓存框架,最早从hibernate发展而来, 是进程中的缓存系统,它提供了用内存,磁盘文件存储,以及分布式存储方式等多种灵活的cache管理方案,快速简单。
Springboot对ehcache的使用非常支持,所以在Springboot中只需做些配置就可使用,且使用方式也简易。

引入依赖
<dependency>
    <groupId>
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员众推

谢谢老铁鼓励

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值