Spring缓存注解@CacheEvict,@CachePut,@Cacheable, @EnableCaching

目录

1、Spring缓存简介

2、Spring的缓存框架

2.1 缓存管理器

2.2 ⭐缓存注解

2.3 缓存接口

3、使用Spring缓存的基本步骤


1、Spring缓存简介

缓存作为一种优化技术,能够存储经常使用的数据或存储数据以使后续访问计算更快,缓存能够有效缩短操作的耗时,例如数据库调用或读写等。而Spring提供了强大的缓存框架,可以通过多种方式对应用程序进行缓存。使用Spring缓存,开发者可以轻松地引入缓存技术并且有效地提高应用程序的性能。

它是基于Java ConcurrentHashMap,这意味着它是线程安全的并且适合大多数单实例应用程序。

图片来源:5、Spring Boot缓存-布布扣-bubuko.com

2、Spring的缓存框架

主要包括三个部分:缓存管理器、缓存注解和缓存接口。

2.1 缓存管理器

缓存管理器是Spring缓存框架中的核心部分,用于管理缓存对象,以及创建、删除和查询缓存。Spring提供了多种缓存管理器的实现类,例如:

  • ConcurrentMapCacheManager:基于Java ConcurrentMap实现的缓存管理器。
  • RedisCacheManager:基于Redis缓存实现的缓存管理器。需要引入spring-data-redis依赖。
  • EhCacheCacheManager:基于Ehcache实现的缓存管理器。需要引入ehcache依赖。

2.2 ⭐缓存注解

缓存注解是一组在Spring中定义的用于增强应用程序性能的注解,主要包括以下几个:

图片来源:5、Spring Boot缓存-布布扣-bubuko.com

  • @Cacheable:触发方法执行前先查看缓存中是否有结果,如果有则返回缓存数据,否则执行方法并将方法的返回值存储到缓存中。

该@Cacheable注释告诉 Spring 将方法的返回值存储在指定的缓存中。后续使用相同参数调用此方法将从缓存中获取结果,而不是执行该方法。

相关参数:

value或cacheNames: 存储结果的缓存的名称。

key: 用于动态计算密钥的 SpEL 表达式。

condition: SpEL 表达式,确定是否应缓存该方法。

  • @CachePut:表示无论什么情况下都执行方法,并将结果存储到缓存中。它非常适合更新资源的方法,能够确保缓存始终是最新的。 此外,也可以与缓存行为相结合@CacheEvict或@Cacheable提供更广泛的缓存行为。
    //@Cacheable(cacheNames = "findAllUsers") //第一次查询完就放入缓存
    @CachePut(cacheNames = "findAllUsers")  //每次查询每次进缓存
    @Override
    public List<User> findAllUsers() {
        return userDao.findAll();
    }
  • @CacheEvict:表示从缓存中删除一个或多个条目,以便在下一次查询时重新加载新鲜的数据。它是为了在特定操作下,使缓存保持最新。

相关参数:

allEntries: 如果设置为true,它将清除指定缓存中的所有条目。

beforeInvocation: 如果设置为true,则会在方法执行之前清除缓存。

    @CacheEvict(cacheNames = "findAllUsers",key = "#id")
    @Override
    public void deleteUser(Long id) {
        userDao.deleteById(id);
    }

2.3 缓存接口

缓存接口是Spring提供的用于访问缓存系统的接口,包括以下几个:

  • Cache:表示用于缓存方法结果的缓存器。
  • CacheManager:表示管理一组缓存器的接口。
  • CacheResolver:表示解析缓存名称并返回对应的缓存实例的接口。

3、使用Spring缓存的基本步骤

  1. 添加缓存管理器。
  2. 在启动类上添加@EnableCaching注解开启缓存功能
  3. 在需要缓存的方法上添加缓存注解(如@CacheEvict,@CachePut,@Cacheable)。
  4. 调用被注解的方法。如果缓存中没有数据,则会执行方法并将结果存储到缓存中;否则直接返回缓存中的数据。

以上是Spring缓存的简单介绍和使用步骤。

参考:

Spring中@Cacheable、@CacheEvict以及其他缓存相关注解的实用介绍 - 知乎

Spring Boot缓存注解详解_笔记大全_设计学院

5、Spring Boot缓存-布布扣-bubuko.com

————————————————————————————————————

感谢阅读,码字不易,多谢点赞!如有不当之处,欢迎反馈指出,感谢!

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值