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

@Cacheable和@CachePut在相同的方法上,但条件相反

@Cacheable和@CachePut是Spring框架中用于缓存的注解。它们可以应用于相同的方法,但条件相反。

@Cacheable注解用于标记一个方法的返回值可以被缓存。当该方法被调用时,Spring会首先检查缓存中是否存在该方法的返回值,如果存在则直接返回缓存中的值,而不执行方法体。如果缓存中不存在该方法的返回值,则会执行方法体,并将返回值存入缓存中。

@CachePut注解也用于标记一个方法的返回值可以被缓存,但它的作用是无论缓存中是否存在该方法的返回值,都会执行方法体,并将返回值存入缓存中。换句话说,@CachePut注解会强制更新缓存中的值。

这两个注解的使用场景和优势如下:

  • 场景:适用于需要缓存方法返回值的情况,例如查询数据库、调用外部接口等耗时操作。
  • 优势:通过缓存可以提高系统的性能和响应速度,减少对底层资源的访问频率,提升用户体验。

推荐的腾讯云相关产品和产品介绍链接地址如下:

  • 腾讯云缓存Redis:提供高性能、可扩展的分布式缓存服务,支持多种数据结构和丰富的功能。详情请参考:https://cloud.tencent.com/product/redis
  • 腾讯云云数据库Redis版:提供高性能、高可靠性的云端数据库服务,支持主从复制、读写分离等特性。详情请参考:https://cloud.tencent.com/product/cdb_redis
  • 腾讯云云函数(SCF):无服务器计算服务,可用于处理缓存更新等业务逻辑。详情请参考:https://cloud.tencent.com/product/scf

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

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

相关·内容

Spring Cache抽象-缓存注解

SimpleCacheManager基于ConcurrentMap配置 @CachePut 主要针对方法配置,能够根据方法请求参数对其结果进行缓存, @Cacheable 不同是,它每次都会触发真实方法调用...调用方法前,将对注解中声明条件进行评估,满足条件才缓存。 与condition属性相反,可以使用unless属性排除某些不希望缓存对象。...缓存条件,可以为空,使用 SpEL 编写,返回 true 或者 false,只有为 true 才进行缓存,unless属性condition属性相反,满足条件则不进行缓存 @Cacheable(cacheNames..., @Cacheable 不同是,它每次都会触发真实方法调用 @CachePut @Cacheable效果几乎一样。...当我们想要指定相同类型多个注释(例如同一方法@CacheEvict或@CachePut)时,@Caching注释很方便。 假设我们有两个包含相同产品缓存,使用相同key。

82720

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

@Cacheable @Cacheable 作用 主要针对方法配置,能够根据方法请求参数对其结果进行缓存 @Cacheable 作用配置方法 参数 解释 example value 缓存名称,...+userName); return getFromDB(userName); } @CachePut @CachePut 作用 主要针对方法配置,能够根据方法请求参数对其结果进行缓存, @Cacheable...不同是,它每次都会触发真实方法调用 @CachePut 作用配置方法 参数 解释 example value 缓存名称, spring 配置文件中定义,必须指定至少一个 @CachePut(...@CacheEvict 作用配置方法 参数 解释 example value 缓存名称, spring 配置文件中定义,必须指定至少一个 @CacheEvict(value=”my cache”...Book findBook(ISBN isbn) {…} } 条件缓存 下面提供一些常用条件缓存 //@Cacheable将在执行方法之前( #result还拿不到返回值)判断condition,如果返回

3.4K20

Spring boot缓存使用

Spring框架为不同缓存产品提供缓存抽象api,API使用非常简单,功能非常强大。今天我们将在缓存看到基于注释Java配置,请注意,我们也可以通过XML配置实现类似的功能。...它与@Cacheable支持相同选项,应该用于缓存填充,而不是方法流优化。 请注意,通常不鼓励对同一方法使用@CachePut@Cacheable注释,因为它们具有不同行为。...虽然后者导致通过使用缓存跳过方法执行,前者强制执行以执行缓存更新。 这会导致意外行为,除了特定角落情况(例如注释具有将它们彼此排除条件)之外,应该避免这种声明。...@Caching 当同时需要CachePutCacheEvict时,使用这个注释。 Spring启动提供与以下缓存提供程序集成。...@Cacheable("student"),该注释该特定方法中启用高速缓存,并且高速缓存名称是"student"。

91810

springboot使用cache缓存

,能够根据方法请求参数对其进行缓存 @CacheEvict 清空缓存 @CachePut 保证方法被调用,又希望结果被缓存。...序列化策略 @CacheConfig 统一配置本类缓存注解属性 @Cacheable/@CachePut/@CacheEvict 主要参数 名称 解释 value 缓存名称, spring...深入源码,查看它其它属性 我们打开@Cacheable注解源码,可以看到该注解提供其他属性,如: String[] cacheNames() default {}; //value注解差不多,二选一...@CachePut注解作用 主要针对方法配置,能够根据方法请求参数对其结果进行缓存, @Cacheable 不同是,它每次都会触发真实方法调用 。...需要注意是该注解value key 必须与要更新缓存相同,也就是与@Cacheable 相同

83020

重学SpringBoot系列之Spring cache详解

@CachePut 作用 主要针对方法配置,能够根据方法请求参数对其结果进行缓存, @Cacheable 不同是,它每次都会触发真实方法调用 作用配置方法 /** * 添加tasklog...主要针对方法配置,能够根据一定条件对缓存进行清空 一般用在更新或者删除方法。...,一个方法只能有一个相同注解生效。...这几个注解通常都是作用在方法,而有些配置可能又是一个类通用,这种情况就可以使用@CacheConfig了,它是一个类级别的注解,可以类级别上配置cacheNames、keyGenerator、...不同cacheNames会对应不同Cache对象,比如我们可以一个方法定义两个cacheNames,虽然也可以用value,它是cacheNames别名,如果有多个配置时候,更推荐用cacheNames

1.2K11

(转载非原创)SpringBoot系列(十五)整合缓存,项目会用得到技术

@EnableCaching @Cacheable @CachePut @CacheEvict @Caching @CacheConfig 1....condition:符合这个条件下才进行缓存 unless:当这个条件为假时候才进行缓存,与condition相反 当然还有cacheManager(缓存管理器)以及cacheResolver(缓存解析器...缓存名称就是cache,设置参数id大于20时候才进行缓存,unless 则是相反。 3....@Caching 借助官方的话说,有时,需要指定多个相同类型注解(例如@CacheEvict或 @CachePut)——例如,因为不同缓存之间条件或键表达式不同。...@Caching允许同一方法使用多个嵌套 @Cacheable、@CachePut@CacheEvict注释。实际就是,各个缓存注解可以配合使用,操作不同缓存空间。

44020

SpringBoot(十四)缓存还是要用起来

@EnableCaching @Cacheable @CachePut @CacheEvict @Caching @CacheConfig 1....condition:符合这个条件下才进行缓存 unless:当这个条件为假时候才进行缓存,与condition相反 当然还有cacheManager(缓存管理器)以及cacheResolver(缓存解析器...缓存名称就是cache,设置参数id大于20时候才进行缓存,unless 则是相反。 3....@Caching 借助官方的话说,有时,需要指定多个相同类型注解(例如@CacheEvict或 @CachePut)——例如,因为不同缓存之间条件或键表达式不同。...@Caching允许同一方法使用多个嵌套 @Cacheable、@CachePut@CacheEvict注释。实际就是,各个缓存注解可以配合使用,操作不同缓存空间。

49820

SpringBoot缓存注解@Cacheable使用姿势介绍

[logo.jpg] SpringBoot系列缓存注解@Cacheable @CacheEvit @CachePut使用姿势介绍 Spring3.1版本,就提供了一条基于注解缓存策略,实际使用起来还是很丝滑...@Cacheable 这个注解用于修饰方法or类,当我们访问它修饰方法时,优先从缓存中获取,若缓存中存在,则直接获取缓存值;缓存不存在时,执行方法,并将结果写入缓存 这个注解,有两个比较核心设置...,才走缓存;否则不写缓存 接下来是unless参数,从名字可以看出它表示不满足条件时才写入缓存 /** * unless, 不满足条件才写入缓存 * * @param age * @return...注解,若缓存不命中,每次返回结果应该都不一样,然而实际访问时,会发现返回都是相同 curl http://localhost:8080/?...小结 最后管理小结一下Spring提供几个缓存注解 @Cacheable: 缓存存在,则从缓存取;否则执行方法,并将返回结果写入缓存 @CacheEvit: 失效缓存 @CachePut: 更新缓存

5.1K11

Spring系列缓存注解@Cacheable @CacheEvit @CachePut 使用姿势介绍

SpringBoot系列缓存注解@Cacheable @CacheEvit @CachePut使用姿势介绍 Spring3.1版本,就提供了一条基于注解缓存策略,实际使用起来还是很丝滑,本文将针对几个常用注解进行简单介绍说明...,有需要小伙伴可以尝试一下 本文主要知识点: @Cacheable: 缓存存在,则使用缓存;不存在,则执行方法,并将结果塞入缓存 @CacheEvit: 失效缓存 @CachePut: 更新缓存 <!...@Cacheable 这个注解用于修饰方法or类,当我们访问它修饰方法时,优先从缓存中获取,若缓存中存在,则直接获取缓存值;缓存不存在时,执行方法,并将结果写入缓存 这个注解,有两个比较核心设置...,才走缓存;否则不写缓存 接下来是unless参数,从名字可以看出它表示不满足条件时才写入缓存 /** * unless, 不满足条件才写入缓存 * * @param age * @return...小结 最后管理小结一下Spring提供几个缓存注解 @Cacheable: 缓存存在,则从缓存取;否则执行方法,并将返回结果写入缓存 @CacheEvit: 失效缓存 @CachePut: 更新缓存

74010

整合@Cache Redis

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

69210

springcache清除缓存_什么叫做缓存数据

,and,or,not,between,instanceof 条件 ?: (ternary),?: (elvis) 三、使用 1.添加缓存 @Cacheable 注解用于标记方法。...第一次执行时候,会将方法结果存入缓存,再次调用该方法执行前,如果 key 相同则直接返回缓存中数据,不会再次执行方法。...上述一些复杂条件依赖于 sqEl 表达式 /* * 方法调用给前进行检测,若存在 key 对应数据则直接从缓存中返回结果,否则在执行后将返回值存入缓存 * */ @Override @Cacheable...他主要属性同 @Cacheable 基本相同,但是由于是先执行才处理数据,所以 key 是可以获得 #root.result 。...当然,如果在方法上自己指定了另外命名空间,则以方法注解为准。

2.9K10

springboot-cache简单使用

springboot-cache注解讲解 1、@Cacheable注解 @Cacheable注解作用是Spring调用该方法之前,首先在缓存中查找方法返回值,默认key是根据参数值生成,如果存在...:指定符合条件情况下才缓存 condition = “#a0=1” 当方法中第一个参数=1时候才进行缓存 5.unless:否定缓存;当unless指定条件为true,方法返回值就不会被缓存;可以获取到结果进行判断...CachePut注解作用简单说一句话:既调用方法,又缓存数据。...key 是不一样 这个时候要使用相同key * **/ @CachePut(/*value = "userInfo", */key = "#userInfo.user_id")...=false * 默认代表缓存清除操作是方法执行之后清除 如果出现异常 缓存就不会清除 * * beforeInvocation =true * 缓存清除是否方法之前执行 无论方法是否出现异常

67920

缓存抽象层Spring cache实战操作

4.1 @EnableCaching 该注解是启用Spring cache 开关。必须开启才能使用Spring cache相关功能。 4.2 @Cacheable 可以标记在一个方法或者类。...Spring缓存方法返回值时是以键值对进行缓存,值就是方法返回结果。...两者都可以执行缓存“放入”操作,不同于@Cacheable,@CachePut每次都将执行方法并将返回值K-V放入缓存,如果该K存在则进行更新。其他属性可参考Cacheable。...4.5 @CacheEvict @CachEvict主要针对方法配置,能够根据一定条件对特定缓存进行清空。...有时候我们需要在一个方法同时使用多个相同注解但是java是不支持一个注解同一个方法多次使用。这时就可以使用该注解进行组合。 5. 使用要点 缓存注解所在方法不能在类中进行内部调用。

72610

Spring Cache框架,实现了基于注解缓存功能。

方法使用**@Cacheable、@CacheEvict、@CachePut**等注解,进行缓存操作。...Spring Cache 常用注解使用 spring boot项目中,使用缓存技术只需项目中导入相关缓存技术依赖包,并在启动类使用@EnableCaching开启缓存支持即可。...#result表示方法调用结果引用。 #root.method, #root.target, #root.caches分别用于引用方法、目标对象受影响缓存缓存。...方法名(#root.methodName)目标类(#root.targetClass) 方法参数可以通过索引访问。...注解 案例 /** * Cacheable方法执行前spring先查看缓存中是否有数据,如果有数据,则直接返回缓存数据;若没有数据,调用方法并将方法返回值放到缓存中 *

27410

springboot高级特性-缓存

缓存提供者 —>管理控制多个CacheManager---->管理控制多个唯一命名cache----->存储cache中key-value对-------->Expiry 每一个存储cache...EhCacheCaceh等 缓存注解 @Cacheable 主要针对方法配置,能够根据方法请求参数对其结果进行缓存 @CacheEvict 清空缓存 @CachePut 保证方法被调用,又希望结果被缓存...;以后再有相同数据,直接从缓存中取,不用去调方法; 方法加上cacheable注解缓存结果 @Cacheable(cacheNames = “emp”) @Cacheable(cacheNames...Cacheable注解是不能用result 因为我们@Cacheable注解要在目标方法执行之前按照key去查询缓存 所以没有方法返回result结果 这时候我们重新测试 http://localhost...= “emp”) 可以指定全局配置 标注该类所有公共注解只需配置一次即可 @CacheConfig(cacheNames = "emp") @Service public class

36820

springboot cache 基本使用

类似 map.put() 中key @Cacheable/@CachePut/@CacheEvict 参数详解: 参数作用value、cacheName缓存名称,数组类型,至少定义一个,例如...需通过condition缓存条件,可以为空,使用 SpEL 编写,返回 true 或者 false,只有为 true 才进行缓存/清除缓存 例如:@Cacheable(value=”testcache...@Cacheable(value=”testcache”,unless=”#userName.length()>2”)sync缓存同步,多线程环境下,某些操作可能使用相同参数同步调用。...=”testcache”,allEntries=true)beforeInvocation (@CacheEvict)是否方法执行前就清空,缺省为 false,如果指定为 true,则在方法还没有执行时候就清空缓存...有则不进入方法,没有则继续进入方法缓存数据。 @CachePut,此注解方法会直接进入,将更新后数据放入cacheNames缓存。

53230

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

Spring Cache抽象中,有三个常用注解:@Cacheable、@CachePut@CacheEvict。...这些注解可以帮助我们方法定义缓存行为,使得开发者能够轻松地添加缓存功能到应用程序中。✈️ @Cacheable@Cacheable注解用于声明一个方法结果是可以缓存。...只有当条件为真时,才会缓存方法结果。unless:缓存否定条件,可以使用SpEL表达式来指定。只有当条件为假时,才会缓存方法结果。...设置数据逻辑}value、key、conditionunless含义与@Cacheable相同。...通过使用这些注解,可以轻松地方法定义缓存行为,从而提高应用程序性能响应速度。实际项目中,我们可能需要根据需求选择合适注解来实现不同缓存策略。

40820

spring boot 集成redis版本说明

@Cacheable 作用配置方法 @Cacheable public List selectAllUser(){ log.info("selectAllUser execute"...:主要针对方法配置,能够根据方法请求参数对其结果进行缓存, @Cacheable 不同是,它每次都会执行方法体 如果key存在,更新内容 如果key不存在,插入内容。...@CachePut 作用配置方法 @CachePut(value="saveOfUpdate", key = "\"user_\" + #user.id") public User saveOfUpdate...下面提供一些常用条件缓存 //@Cacheable将在执行方法之前( #result还拿不到返回值)判断condition,如果返回true,则查缓存; @Cacheable(value = "user...,默认提供CacheManager对象可能不能满足需要 // 因此建议依赖业务技术需求,自行做一些扩展定制 // 这样就可以使用Spring4中@Cacheable、@CachePut

1.1K40
领券