首页
学习
活动
专区
工具
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 @Cacheable和@CachePut。如果在@cachePut的方法内部抛出异常,则从Cache获取数据扩展和接口具有相同的方法,具有相同的参数,但返回类型不同RStudio代码在Windows上运行,但相同的代码在Linux上失败。模拟并发线程(在相同的资源/方法上)具有不同url但具有相同参数和相同方法功能的请求映射在hdfs上同步大小相同但内容不同的文件在条件相同但输出不同的情况下,如何组合变异?在if条件中,对于相同的条件,等于和不等于都返回true在sql中查找具有相同ID和条件的值的总和在接口和抽象类中使用相同的方法在名称不同但含义相同的字段上连接两个表虽然在vba中使用不同的方法剪切和粘贴相同的单元格,但输出不同?Android绑定适配器在相同的视图类型上使用相同的绑定名称,但用途不同R函数在相同的表和列中查找值,但值不同有条件地调用具有相同URL和Http谓词的操作方法在模型上测试尺度和精度的正确方法有没有一种方法可以合并执行相同任务但位于不同类和ids上的jQuery函数“集合已修改错误”,但仅在按键时使用相同的方法调用,而不是在单击按钮时使用相同的方法调用当片段的数量超过50个,但每个片段都有相同的布局和方法时,处理ViewPager和片段的正确方法是什么?在ios和android上的Rect原生完全相同的标题?
相关搜索:
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Spring Cache抽象-缓存注解

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

86520

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.8K20
  • Spring boot缓存使用

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

    94810

    springboot使用cache缓存

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

    85320

    重学SpringBoot系列之Spring cache详解

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

    1.4K11

    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注释。实际就是,各个缓存注解可以配合使用,操作不同缓存空间。

    51920

    (转载非原创)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注释。实际就是,各个缓存注解可以配合使用,操作不同缓存空间。

    45020

    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.6K11

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

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

    75910

    整合@Cache Redis

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

    71010

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

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

    3K10

    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 * 缓存清除是否方法之前执行 无论方法是否出现异常

    74520

    缓存抽象层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. 使用要点 缓存注解所在方法不能在类中进行内部调用。

    73910

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

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

    34410

    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

    37720

    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缓存。

    54730

    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.3K40

    SpringBoot Cache 入门

    开个玩笑,正常开发中,我们CRUD需要进行缓存环节一般是查询,更新,删除,一些特殊业务场景下也会对插入进行缓存,这里不做考虑。...然后我们根据需求想要解决这个问题,那么Cache对应注解就出现了 #根据方法请求参数对其结果进行缓存 @Cacheable ----------- #保证方法被调用,又希望结果被缓存...@CachePut ------------ 清空缓存 @CacheEvict 了解这三个注解我们来看下如何使用吧 @Cacheable 这个注解有多个属性 key 缓存...条件为true不缓存 @Override @Cacheable(cacheNames = "tea",key = "#id",condition = "#id>1") public Teacher...,接下来处理更新缓存 ## @CachePut 这个注解是方法执行完成后调用与@Cacheable调用顺序刚好相反 @GetMapping("/tea") @CachePut(cacheNames

    60950
    领券