springboot缓存(SpringCache)

前言:

Cache(缓存)是基于局部性原理实现的,包括空间局部性和时间局部性,主要⽤来解决读取速度和处理速度不⼀致的问题。计算机中,CPU提供对内存的cache来解决CPU和内存速度不⼀致的问题。⽽这⾥提到的cache,是解决内存和磁盘读写速度不⼀致的情况,对于磁盘,在内存中设置cache来提⾼处理速度和减少磁盘访问次数。当对某类数据的读取频次较⾼,同时数据改动频率较⼩的情况下,可以使⽤缓存来提⾼性能。

缓存类型:
• JVM缓存(堆缓存):创建全局变量,如Map,List等容器来存放数据。Concurrent、Ehcache、
Caffeine都属于堆内存缓存。堆缓存只适⽤于单点使⽤,不适⽤分布式环境。
• 分布式缓存:缓存中间件,如 Redis、Memcached,在分布式环境下共享内存

SpringCache

SpringCache 并非某一种 Cache 实现的技术,SpringCache 是一种缓存实现的通用技术,基于 Spring 提供的 Cache 框架,让开发者更容易将自己的缓存实现高效便捷的嵌入到自己的项目中。
在这里插入图片描述
从源码中我们可以看到,SpringCache实现了几乎所有常用的缓存方案,在使用时只需在maven中添加相关缓存的依赖,SpringCache便会自动启用该缓存方案。需要注意的是,若导入了多个缓存的jar包,SpringCache会按照源码中所规定的先后顺序根据优先级来确定使用哪种缓存方案,若一个jar包都没有导入,则会默认使用simple。

启用SpringCache需要在maven中添加以下依赖

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-cache</artifactId>
		</dependency>

在启动类加上@EnableCaching注解即可开启使用缓存

@SpringBootApplication
@EnableCaching  // 开启缓存注解
public class CacheApplication {

	public static void main(String[] args) {
		SpringApplication.run(CacheApplication.class, args);
	}

}

SpringCache–几个重要概念&缓存注解
在这里插入图片描述

  • @Cacheable(若缓存中有则不调用方法)
    用法:标注在service业务层⽅法上
    执行流程:先执⾏@Cacheable注解中的getCache(String name)⽅法,根据name判断ConcurrentMap中是否有此缓存,如果没有缓存那么创建缓存并保存数据,另外service层的⽅法也会执⾏。如果有缓存不再创
    建缓存,另外service层的⽅法也不会执⾏。
    总结:先执行@Cacheable----->再执⾏service层的⽅法
    属性:

    • cacheNames/value:指定缓存组件的名字
      
    • key:缓存数据使用的key,可以用它来指定。默认使用方法参数的值,一般不需要指定
      
    • keyGenerator:作用和key一样,二选一
      
    • cacheManager和cacheResolver作用相同:指定缓存管理器,二选一
      
    • condition:指定符合条件才缓存,比如:condition="#id>3",也就是说传入的参数id>3才缓存数据
      
    •  unless:否定缓存,当unless为true时不缓存,可以获取方法结果进行判断
      
    •  sync:是否使用异步模式
      
  • @CachePut(既调用方法,又更新缓存)
    用法:标注在service业务层⽅法上
    执行流程:先执⾏service层的⽅法,如果成功则执⾏@Cacheable注解中的put()⽅法。
    属性:与@Cacheable基本一致

  • @CacheEvict(删除缓存)
    用法:标注在service业务层⽅法上
    属性:

    • key:指定要清除缓存中的某条数据
      
    • allEntries=true:删除缓存中的所有数据
      
    • beforeInvocation=false:默认是在方法之后执行清除缓存
      
    • beforeInvocation=true:现在是在方法执行之前执行清除缓存,作用是:只清除缓存、不删除数据库数据
      
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值