Spring Cache的使用

本文探讨了Spring框架中缓存功能的使用,通过@EnableCaching启用缓存,并介绍了ConcurrentMapCacheManager的作用。深入解析了@Cacheable、@CachePut和@CacheEvict三个核心注解的使用场景及参数配置,如value、key、condition等,适用于复杂业务场景下的缓存管理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

当然我们在平时的使用过程过程中,都是使用redis来做分布式缓存,而且一般在业务逻辑中,接口这种命中率比较低,而且还要考虑缓存淘汰算法的选取,所以一般应用不多。但是spring既然有这么个功能,我们就来看看,这里参照前辈的Spring5-Design-Patterns来写这篇博客。

2c8fc6e694c67cf1a0d17812fcbeb97a765.jpg

这里需要使用@EnableCaching注解来开启缓存,然后之类还需要一个缓存管理器,这里使用ConcurrentMapCacheManager,这个实现后续再看。

815f7331b1d043ed11313416c6457ea78af.jpg

这里再使用@CachePut("accountCache")来标记这个缓存,但是我看这里面的注解选项,好像没有缓存时间,然后我们就可以使用啦

bd6d1e4029d923f8e0fe37edd96e42b3f74.jpg

输出:

aed2b7cc54dc538343cb8c54f601e57df75.jpg

可供选择的有这些,简单介绍三种:

  • value (也可使用 cacheNames) : 可看做命名空间,表示存到哪个缓存里了。
  • key : 表示命名空间下缓存唯一key,使用Spring Expression Language(简称SpEL,详见参考文献[5])生成。
  • condition : 表示在哪种情况下才缓存结果(对应的还有unless,哪种情况不缓存),同样使用SpEL

1f08b0a1f821061b340e3b66425dc25c66c.jpg

这里主要使用的有三个注解:

@Cacheable 主要针对方法配置。能够依据方法的请求參数对其结果进行缓存
@CachePut  主要针对方法配置,能够依据方法的请求參数对其结果进行缓存,和 @Cacheable 不同的是,它每次都会触发真实方法的调用
@CachEvict  主要是用来标注在需要清除缓存元素的方法或类上的。当标记在一个类上时表示其中所有的方法的执行都会触发缓存的清除操作

这里可以知道第二次查询的时候,是从缓存中取的,这里的依赖有:

2dfd023d91665bd5394b5f664062d832e2b.jpg

感觉可供选择的还是比较少的,不是特别实用,在复杂的业务场景前。

参考:

git@github.com:PacktPublishing/Spring5-Design-Patterns.git

https://www.cnblogs.com/fashflying/p/6908028.html

转载于:https://my.oschina.net/u/2277632/blog/3047674

Spring CacheSpring框架提供的一种缓存机制,用于提高应用程序的性能和响应速度。通过使用Spring Cache,可以将方法的返回值缓存起来,当下次调用相同的方法时,可以直接从缓存中获取结果,而不需要再执行方法的逻辑。 在使用Spring Cache时,需要进行一些配置。首先,需要添加Redis的配置信息,包括缓存类型、缓存过期时间、缓存键的前缀等。可以通过设置`spring.cache.type`为`redis`来指定使用Redis作为缓存类型。可以使用`spring.cache.redis.time-to-live`设置缓存的过期时间,单位为毫秒。可以使用`spring.cache.redis.key-prefix`设置缓存键的前缀,如果不指定前缀,则默认使用缓存的名字作为前缀。可以使用`spring.cache.redis.use-key-prefix`设置是否使用前缀,默认为true。可以使用`spring.cache.redis.cache-null-values`设置是否缓存空值,以防止缓存穿透。 另外,Spring Cache还支持使用JCache(JSR-107)注解来简化开发。从Spring 3.1开始,定义了`org.springframework.cache.Cache`和`org.springframework.cache.CacheManager`接口来统一不同的缓存技术。 在使用Spring Cache时,可以通过在方法上添加`@Cacheable`注解来启用缓存功能。当调用带有`@Cacheable`注解的方法时,Spring会首先检查缓存中是否存在相应的结果,如果存在,则直接返回缓存中的结果,如果不存在,则执行方法的逻辑,并将结果存入缓存中。 总结起来,使用Spring Cache可以通过配置Redis等缓存信息,并在方法上添加`@Cacheable`注解来实现缓存功能,提高应用程序的性能和响应速度。 #### 引用[.reference_title] - *1* [SpringCache使用](https://blog.youkuaiyun.com/ABestRookie/article/details/121297482)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [springcache使用详解(使用redis做分布式缓存)](https://blog.youkuaiyun.com/A_art_xiang/article/details/125580962)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值