Spring Boot(Spring Boot缓存管理)


缓存是分布式系统的重要组件,主要解决数据库数据的高并发访问问题。在实际开发中,尤其是用户访问量较大的网站,为了提高服务器访问性能、减少数据库的压力、提高用户体验,使用缓存显得尤为重要。

6.1 Spring Boot 默认缓存管理

Spring 框架支持透明地向应用程序添加缓存并对缓存进行管理,其管理缓存的核心是将缓存应用于操作数据的方法中,从而减少操作数据的次数,同时不会对程序本身造成任何干扰。Spring Boot继承了Spring框架的缓存管理功能,通过使用@EnableCaching注解开启基于注解的缓存支持,Spring Boot可以启动缓存管理的自动化配置。

6.1.2 Spring Boot 默认缓存体验

  • 使用@EnableCaching注解开启基于注解的缓存支持,该注解通常会添加在项目启动类上
  • 使用@Cacheable注解对数据操作方法进行缓存管理。将@Cacheable注解标注在Service类的查询方法上,对查询结果进行缓存。

6.2 Spring Boot 缓存注解介绍

1.@EnableCaching注解

Spring框架提供,Spring Boot框架对该注解进行了继承,配置在启动类,开启基于注解的缓存支持。

2.@Cacheable注解

Spring框架提供的,可以作用于类或方法,用于对方法的查询结果进行缓存管理。

属性名 说明
value/cacheNames 指定缓存空间的名称,必配属性,二选一
key 指定缓存数据的key,默认使用方法参数值,可以使用SpEL表达式
keyGenerator 缓存数据的key的生成器,与key属性二选一使用
cacheManager 缓存管理器
cacheResolver 缓存解析器,cacheManager属性二选一使用
condition 符合某条件下,进行数据缓存 可以使用SpEL表达式
unless 符合条件不尽兴数据缓存
sync 是否使用异步缓存
  • key属性
    如果缓存数据时,没有指定key属性,Spring boot默认提供的配置类SimpleKeyGenerator会通过generateKey(Object…params) 方法参数生成key值,如果 方法没有参数,key属性是空参的SimpleKey[]对象,如果多个参数,那么key属性是一个带参的SimpleKey[param1,[param2,…]]对象
名称 位置 描述 示例
methodName root对象 当前被调用的方法名 #root.methodName
method root对象 当前被调用的方法 #root.method.name
target root对象 当前被调用的目标对象实例 #root.target
targetClass root对象 当前被调用的对象的类 #root.targetClass
args root对象 当前被调用的方法的参数列表 #root.args[0]
caches root对象 当前被调用对象的缓存列表 #root.caches[0].name
ArgumentName 执行上下文 当前被调用的方法参数 可以用#参数名 或者 #a0 #p0的形式表示 0代表参数索引从0开始 #comment_id #a0 #p0
result 执行上下文 当前方法执行后的返回结果 #result
  • KeyGenerator 属性
    KeyGenerator属性与Key属性本质作用相同, 用于指定缓存数据的key,只不过KeyGenerator属性指定的不是具体的key值,而是key值的生成器规则。

3.@CachePut 注解

作用于类或者方法,更新缓存数据

4.@CacheEvict 注解

作用于类或者方法上,该注解的作用是删除缓存数据。

  • allEntries 属性
    表示是否清除指定缓存空间中的所有缓存数据,默认false(默认只删除指定key对应的缓存数据)
  • beforeInvocation属性
    表示是否在方法执行之前缓存清除,默认为false,如果设置为true可能有弊端 |

5.@Caching 注解

处理负责规则的数据缓存,可以作用于类或者方法
包含cacheable put evict三个属性,作用等同于@Cacheable @CachePut @CacheEvict

6.CacheConfig

注解作用于类 用于统筹管理类中所有使用@Cacheable @CachePut @CacheEvit

属性值就近原则

6.3 Spring Boot 整合Redis 缓存实现

6.3.1 Spring Boot 支持的缓存组件

在Spring Boot,数据的管理存储依赖于Spring框架中cache相关的org.springframework.cache.Cache 和 org.springframework.cache.CacheManager 缓存管理器接口。
如果程序中没哟定义类型为cacheManager 的Bean组件或者是名为 cacheResolver的cacheResolver缓存解析器,Spring Boot将尝试选择开启以下缓存组件(按照指定的顺序)

  • Generic
  • JCache(JSR - 107) (EhCache 3、Hazelcast、Infinispan等)
  • EhCache 2.x
  • Hazelcast
  • Infinispan
  • Couchbase
  • Redis
  • Caffeine
  • Simple

6.3.2 基于注解的Redis缓存实现

  1. 添加依赖启动器
<dependency>
    <groupId>org.springframework.boot&l
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值