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

玩转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.8K51

整合@Cache 和 Redis

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

76310
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    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”

    4.6K20

    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

    59030

    Spring Cache 简介

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

    62220

    Spring缓存注解【@Cacheable、@CachePut、@CacheEvict、@Caching、@CacheConfig】使用及注意事项

    @toc一、概述本文主要是为了个人练习spring的缓存注解【@Cacheable、@CachePut、@CacheEvict、@Caching、@CacheConfig】,以及总结个人在使用过程中发现的疑惑点...二、缓存注解种类@EnableCaching@Cacheable@CachePut@CacheEvict@Caching@CacheConfig@Cacheable:主要用于 “查询” 功能@CachePut...第1步:在启动类上加注解@EnableCaching第2步:在具体方法上加注解【@CachePut、@CacheEvict、@Caching】五、详细介绍介绍1)@Cacheable(常用)在 @Cacheable...与 @Cacheable 不同的是使用 @CachePut标注的方法在执行前不会去检查缓存中是否存在之前执行过的结果,而是每次都会执行该方法,并将执行结果以键值对的形式存入指定的缓存中。...其拥有三个属性:cacheable、put 和 evict,分别用于指定@Cacheable、@CachePut 和 @CacheEvict。

    1.6K00

    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,则在方法还没有执行的时候就清空缓存

    2.1K20

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

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

    84711

    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

    74430

    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 是指定是否删除缓存中的所有数据默认为

    41120

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

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

    58620

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

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

    64240

    深入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会自动配置一个

    2K90

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

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

    21510

    优化您的Spring应用程序:缓存注解的精要指南

    在本篇博客中,我们将深入研究Spring的@Cacheable、@CacheEvict、@CachePut等缓存注解,了解它们的工作原理,以及如何使用它们来优化您的Spring应用程序。...让我为您详细解释每个注解的作用和用法: 1. @Cacheable: 用于触发缓存入口。 通常放在方法上,表示该方法的结果会被缓存。...与@Cacheable不同,@CachePut注解下的方法始终会被执行,无论缓存中是否已存在数据。 4. @Caching: 用于将多个缓存注解组合在一个方法上。...允许一个方法同时设置多个缓存注解,例如同时使用@Cacheable和@CachePut来实现读取和更新缓存。 5. @CacheConfig: 用于在类级别设置一些缓存相关的共同配置。...} } 使用@CacheEvict注解来清除缓存: @CacheEvict(value = "myCache", key = "#id") public void clearCache(Long id)

    11810
    领券