首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

我是否正确使用了@Cacheable、@CachePut和@CacheEvict?

@Cacheable、@CachePut和@CacheEvict是Spring框架中用于缓存管理的注解。它们可以用于方法级别,用于标记方法的返回值应该被缓存、更新缓存或者清除缓存。

  1. @Cacheable注解用于标记方法的返回值应该被缓存。当方法被调用时,首先会检查缓存中是否存在相同参数的结果,如果存在,则直接返回缓存中的结果,不再执行方法体内的代码。如果缓存中不存在结果,则执行方法体内的代码,并将结果存入缓存中。该注解可以指定缓存的名称、缓存的key以及缓存的条件等。
  2. @CachePut注解用于标记方法的返回值应该被缓存,并且每次都执行方法体内的代码。即使缓存中已存在相同参数的结果,也会执行方法体内的代码,并将结果存入缓存中。该注解可以指定缓存的名称、缓存的key以及缓存的条件等。
  3. @CacheEvict注解用于标记方法执行后清除缓存。可以指定清除的缓存名称、缓存的key以及清除缓存的条件等。该注解可以用于删除缓存中的某个或多个缓存项。

这些注解可以帮助开发人员简化缓存管理的代码,并提高系统的性能和响应速度。

推荐的腾讯云相关产品:

  • 腾讯云缓存Redis:提供高性能、可扩展的内存数据库服务,支持多种数据结构和缓存策略。链接地址:https://cloud.tencent.com/product/redis
  • 腾讯云云数据库CynosDB:提供高可用、可扩展的数据库服务,支持MySQL和PostgreSQL。链接地址:https://cloud.tencent.com/product/cynosdb
  • 腾讯云对象存储COS:提供安全、稳定、低成本的云端存储服务,适用于存储和处理各种类型的数据。链接地址:https://cloud.tencent.com/product/cos

请注意,以上推荐的腾讯云产品仅供参考,具体选择应根据实际需求和项目情况进行评估和决策。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

玩转Spring Cache --- @Cacheable@CachePut@CacheEvict注解的原理深度剖析使用【享学Spring】

[] cacheable() default {}; CachePut[] put() default {}; CacheEvict[] evict() default {}; } @CacheConfig...false,如果指定为 true 原理分析 先阅读:【小家Spring】玩转Spring Cache — @Cacheable/@CachePut/@CacheEvict缓存注解相关基础类打点 再读本文...所以还没有看这块的,此处再一次推荐:【小家Spring】玩转Spring Cache — @Cacheable/@CachePut/@CacheEvict缓存注解相关基础类打点 CacheInterceptor...下面按照正常的思路,把Spring处理的步骤总结如下: CacheOperation封装了@CachePut、@Cacheable、@CacheEvict(下称三大缓存注解)的属性信息,以便于拦截的时候能直接操作此对象来执行逻辑...但是,但是,但是当你使用了多套缓存时,还是建议显示的指定的。

11.4K51

整合@Cache Redis

对于缓存声明,spring的缓存提供了一组java注解: @Cacheable:触发缓存写入。 @CacheEvict:触发缓存清除。 @CachePut:更新缓存(不会影响到方法的运行)。...还可以设置根据条件判断是否需要缓存 condition:取决于给定的参数是否满足条件 unless:取决于返回值是否满足条件 以下是一个简单的例子: @Cacheable(cacheNames="book...@CachePut注解 @CachePut:当需要更新缓存而不干扰方法的运行时 ,可以使用该注解。也就是说,始终执行该方法,并将结果放入缓存,注解参数与@Cacheable相同。...descriptor) 通常强烈建议不要对同一方法同时使用@CachePut@Cacheable注解,因为它们具有不同的行为。...@CacheEvict注解 @CacheEvict:删除缓存的注解,这对删除旧的数据无用的数据是非常有用的。

70510
  • cacheable更新_详解Spring缓存注解@Cacheable,@CachePut , @CacheEvict使用

    @Cacheable @Cacheable 的作用 主要针对方法配置,能够根据方法的请求参数对其结果进行缓存 @Cacheable 作用配置方法 参数 解释 example value 缓存的名称,...@Cacheable(value=”accountCache”)// 使用了一个缓存名叫 accountCache public Account getAccountByName(String userName...+userName); return getFromDB(userName); } @CachePut @CachePut 的作用 主要针对方法配置,能够根据方法的请求参数对其结果进行缓存, @Cacheable...不同的是,它每次都会触发真实方法的调用 @CachePut 作用配置方法 参数 解释 example value 缓存的名称,在 spring 配置文件中定义,必须指定至少一个 @CachePut(...@CacheEvict 作用配置方法 参数 解释 example value 缓存的名称,在 spring 配置文件中定义,必须指定至少一个 @CacheEvict(value=”my cache”

    3.8K20

    springboot cache 基本使用

    /@CachePut/@CacheEvict 参数详解: 参数作用value、cacheName缓存名称,数组类型,至少定义一个,例如:@Cacheable(value=”mycache”)key...对于这些特定的情况,属性 sync 可以指示底层将缓存锁住,使只有一个线程可以进入计算,而其他线程堵塞,直到返回结果更新到缓存中。...allEntries (@CacheEvict )是否清空所有缓存内容缺省为 false,如果指定为true则方法调用后立即清空所有缓存               例如:@CachEvict(value...=”testcache”,allEntries=true)beforeInvocation (@CacheEvict)是否在方法执行前就清空,缺省为 false,如果指定为 true,则在方法还没有执行的时候就清空缓存...= "test") //@CachePut(cacheNames = "test") //@CacheEvict(value = "test") public Person cacheableTest

    54730

    Spring Cache 简介

    可能你之间使用一个Map来管理,或者采用了EhCache或者Guava等框架,但是否注意到这些缓存代码是和你的业务代码混在一起的,而且一旦使用了某种缓存的话,想切换一下估计头都要大了。...当所注解的方法被调用时,Spring首先会根据参数从缓存中查找,如果没有则执行相应的方法,否则返回缓存的值; @CacheEvict: 该注解表示所注解的方法执行后将清空相应缓存; @CachePut:...该注解表示所注解的方法在执行后能够将执行结果进行缓存,@Cacheable注解不同的是,它所注解的方法每次都会执行,即使执行的结果在缓存中已经存在;而@Cacheable所注解的方法只有缓存中不存在时才会执行...比如,对于update(User user)这种类型的方法; @Caching: 当我们需要在一个方法上添加多个缓存注解(如:@CacheEvict@CachePut),或者需要操作多个缓存时,可以使用该注解进行组合...@CachePut; @CacheRemove: 类似Spring所提供的@CacheEvict,不过只支持将方法返回的结果从缓存中清除,如果要清空全部缓存需要使用下面的注解; @CacheRemoveAll

    59520

    Spring缓存注解@Cacheable、@CacheEvict、@CachePut

    ,返回 true 或者 false,只有为 true 才进行缓存 @Cacheable(value="testcache",condition="#userName.length()>2")  @CachePut...@CachePut 的作用 主要针对方法配置,能够根据方法的返回值对其结果进行缓存, @Cacheable 不同的是,它每次都会触发真实方法的调用,在其他地方写的是根据方法的请求参数对其结果进行缓存...,实际是按方法返回值进行缓存的,这里就遇到了一个坑,开始的时候是在Mybatis的Mapper层进行缓存的,如下面的代码。..."testcache",condition="#userName.length()>2") allEntries 是否清空所有缓存内容,缺省为 false,如果指定为 true,则方法调用后将立即清空所有缓存...@CachEvict(value="testcache",allEntries=true) beforeInvocation 是否在方法执行前就清空,缺省为 false,如果指定为 true,则在方法还没有执行的时候就清空缓存

    2K20

    【Spring原理高级进阶】有Redis为啥不用?深入剖析 Spring Cache:缓存的工作原理、缓存注解的使用方法与最佳实践

    曾经也是Redis的忠实粉丝 但是SpringCache更加的简洁,面对轻量级的数据 小型的业务体系就无需编写复杂的缓存逻辑代码。最重要的是,Spring的纯注解开发香呀!...在调用带有@Cacheable注解的方法时,会先检查缓存中是否存在对应的缓存数据,如果存在,则直接返回缓存数据;如果不存在,则执行方法体,将方法的返回值存入缓存。...那么我们现在明白了他的基本使用了 接着往下走 我们再来研究其原理: 缓存的工作原理: 缓存是一种将数据存储在快速访问介质中的技术,以减少对慢速存储介质(如数据库)的访问次数,提高系统的性能响应速度。...了解缓存的工作原理对于正确使用配置缓存非常重要。...@Cacheable用于获取缓存数据,@CachePut用于更新缓存数据,@CacheEvict用于清除缓存数据。缓存的键(key)可以根据业务需求设置,以唯一标识缓存数据。

    53610

    Spring cache原理详解

    就这么简单我们就开启并使用了spring的缓存能力。...cacheEvict : cacheEvicts) { ops.add(parseEvictAnnotation(ae, defaultConfig, cacheEvict)); } CachePut...=true),接着检查@Cacheable是否命中缓存,如果没有命中则放入需要执行CachePutRequest列表暂存,然后检查是否缓存命中且没有需要更新的缓存,如果满足则返回结果使用缓存结果,否则使用业务查询结果作为返回结果...,并且填充需要缓存的结果,然后收集@CachePut操作,把@CachePut@Cacheable未命中的请求同步到缓存,最后清理@CacheEvict的缓存(beforeInvocation=false...(@Cacheable,@CachePut,@CacheEvict等),如果有说明增强器对目标代理类适用,然后找到合适的增强器列表在APC中调用createProxy创建代理: protected Object

    67930

    springboot高级特性-缓存

    缓存提供者 —>管理控制多个CacheManager---->管理控制多个唯一命名的cache----->存储在cache中的key-value对-------->Expiry 每一个存储在cache...EhCacheCaceh等 缓存注解 @Cacheable 主要针对方法配置,能够根据方法的请求参数对其结果进行缓存 @CacheEvict 清空缓存 @CachePut 保证方法被调用,又希望结果被缓存...return empById; } 访问测试 http://localhost:8080/emp/1 第一次访问 我们清空控制台进行 第二次访问 可以看到并没有查询数据库 而是使用了缓存...+id+"号员工"); Employee empById = employeeMapper.getEmpById(id); return empById; } 现在指定的...注解 @CacheEvict : 缓存清除 通过可以指定要清除的数据 不写默认是参数为key key = "#id"取出id为key的缓存 参数:allEntries = true 是指定是否删除缓存中的所有数据默认为

    37720

    张三进阶之路 | 基于Spring Cache实现缓存技术

    同时,他会编写详尽的单元测试、集成测试压力测试用例,确保新缓存系统的功能正确性能稳定性。...在Spring Cache抽象中,有三个常用的注解:@Cacheable、@CachePut@CacheEvict。...✈️ @Cacheable@Cacheable注解用于声明一个方法的结果是可以缓存的。当方法被调用时,Spring会首先检查缓存中是否存在相应的键值对。...✈️ @CachePut @CachePut注解用于声明一个方法的结果应该被放入缓存中。每次调用该方法时,都会执行方法并将结果存入缓存,无论缓存中是否已存在该键值对。...正确的缓存策略一致性的维护是确保缓存带来性能提升而不是问题的关键。开发者应该根据应用程序的具体需求和特点,选择合适的缓存技术策略。正在参与2024腾讯技术创作特训营最新征文,快来和我瓜分大奖!

    49420

    【快学SpringBoot】快速上手好用方便的Spring Cache缓存框架

    condition 缓存控制条件,如果使用了该字段,那么只有结果为true时,才会缓存结果。...CachePut注解 相信HTTP协议熟悉的朋友一看名字就知道这个注解是干嘛用的了。我们可以通过CachePut注解来更新缓存。其常用注解与Cacheable是一致的。...Arrays.asList("Happyjava", "Hello-SpringBoot", System.currentTimeMillis() + ""); } 复制代码 我们可以写一个valuekey...CachePut方法后,Cacheable方法会返回一个新的结果。...CacheEvict注解 这是一个删除注解。常用参数除了上面两个注解列出的三个之外,还有一个allEntries,这是一个布尔类型的参数,默认为false,其意思是“是否删除所有缓存”。

    61140

    深入Spring Boot (十一):整合Redis详解

    Spring Data Redis是Spring Data项目中的一个主要模块,它提供了从Spring应用程序中轻松配置访问Redis的功能、提供了与应用交互的低级高级抽象,使开发者摆脱了对基础结构的关注...提供的主要注解有@Cacheable、@CachePut、@CacheEvict@Caching,具体见表1。 ? @Cacheable的常用属性及说明如表2所示。 ?...@CachePut的常用属性同@Cacheable。 @CacheEvict的常用属性见表4。 ?...当需要在类上或方法上同时使用多个注解时,可以使用@Caching,如@Caching(cacheable = @Cacheable("User"), evict = {@CacheEvict("Member...=false #缓存有效时间,单位毫秒,默认长久有效 spring.cache.redis.time-to-live=5000 小结 当Redis可用并正确配置,应用启动时,Spring Boot会自动配置一个

    1.9K90

    【快学SpringBoot】快速上手好用方便的Spring Cache缓存框架

    condition 缓存控制条件,如果使用了该字段,那么只有结果为true时,才会缓存结果。...CachePut注解 相信HTTP协议熟悉的朋友一看名字就知道这个注解是干嘛用的了。我们可以通过CachePut注解来更新缓存。其常用注解与Cacheable是一致的。...return Arrays.asList("Happyjava", "Hello-SpringBoot", System.currentTimeMillis() + ""); } 我们可以写一个valuekey...CachePut方法后,Cacheable方法会返回一个新的结果。...CacheEvict注解 这是一个删除注解。常用参数除了上面两个注解列出的三个之外,还有一个allEntries,这是一个布尔类型的参数,默认为false,其意思是“是否删除所有缓存”。

    17610

    SpringBoot整合SpringCache的简单使用介绍

    ") public List select() { // 通过当前的这个日志来看数据是否走了缓存 log.info("@Cacheable 读取数据...() { // 通过当前的这个日志来看数据是否走了缓存 log.info("@CachePut 读取数据 "); return users; }...的作用 主要针对方法配置,能够根据方法的请求参数对其结果进行缓存, @Cacheable 不同的是,它每次都会触发真实方法的调用 参数 解释 value cacheNames 作用一致 cacheNames...@CacheEvict配置于方法上,通常用在删除方法上,用来从缓存中移除对应数据 参数 解释 value cacheNames 作用一致 cacheNames 参考@CacheConfig的cacheNames...将此属性设置为true ,将导致删除发生,而与方法结果无关(即,是否引发异常)默认值为false ,这意味着将在成功调用建议的方法之后(即,仅在调用未引发异常的情况下)进行缓存删除操作 喜欢编程的,请关注的博客

    57150

    springboot中的cache(二)

    ## @Cacheable @Cacheable 的作用 主要针对方法配置,能够根据方法的请求参数对其结果进行缓存 @Cacheable 作用配置方法 | 参数 解释 example value 缓存的名称...@CachePut:既调用方法,又更新缓存数据;同步更新缓存 修改了数据库的某个数据,同时更新缓存; 使用 CachePut 注解,该方法每次都会执行,会清除对应的 key 值得缓存 (或者更新),分为以下两种情况...## @CacheEvict @CacheEvict 缓存清除 key:指定要清除的数据 ?...@CacheEvict:缓存清除 key:指定要清除的数据 allEntries = true:指定清除这个缓存中所有的数据 beforeInvocation = false:缓存的清除是否在方法之前执行...默认代表缓存清除操作是在方法执行之后执行; 如果出现异常缓存就不会清除 beforeInvocation = true: 代表清除缓存操作是在方法运行之前执行,无论方法是否出现异常,缓存都清除 @CacheEvict

    49120
    领券