Springboot使用@Cacheable 更优雅的使用缓存 以及如何设置失效时间

可以自定义一个cacheManager, 如下图的RedisCacheManager

该构造方法需要3个参数, 分别是

cacheWriter : 需要一个缓存写入器
defaultCacheConfiguration: 默认的失效配置, 理解为默认的配置及失效时间
initialCacheConfigurations: 可以自定义缓存配置

我的redis 缓存相关 具体配置文件, 如下, 可直接拷贝使用

@Bean

public CacheManager cacheManager(RedisConnectionFactory factory) {

return new RedisCacheManager(

RedisCacheWriter.lockingRedisCacheWriter(factory),

this.getRedisCacheConfigurationWithTtl(1),

this.getRedisCacheConfigurationMap()

);

}

/**

  • 默认失效时间配置

  • @param days 未设置失效事件的key 默认days失效

*/

private RedisCacheConfiguration getRedisCacheConfigurationWithTtl(Integer days) {

Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer<>(Object.class);

ObjectMapper om = new ObjectMapper();

om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);

om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);

jackson2JsonRedisSerializer.setObjectMapper(om);

return RedisCacheConfiguration.defaultCacheConfig().serializeValuesWith(

RedisSerializationContext

.SerializationPair

.fromSerializer(jackson2JsonRedisSerializer)).entryTtl(Duration.ofDays(days));

}

public static final String REGION_LIST_BY_CODE_CACHE_KEY = “region:list”;

public static final String REGION_NAME_BY_CODE_CACHE_KEY = “region:name”;

/**

  • 已知缓存名称的映射以及用于这些缓存的配置

*/

private Map<String, RedisCacheConfiguration> getRedisCacheConfigurationMap() {

小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Java工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Java开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频

如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Java)
img

惊喜

最后还准备了一套上面资料对应的面试题(有答案哦)和面试时的高频面试算法题(如果面试准备时间不够,那么集中把这些算法题做完即可,命中率高达85%+)

image.png

image.png

和面试时的高频面试算法题(如果面试准备时间不够,那么集中把这些算法题做完即可,命中率高达85%+)

[外链图片转存中…(img-PNdKgeWP-1711083521639)]

[外链图片转存中…(img-LqS5JX9j-1711083521639)]

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

  • 7
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
@CacheableSpring Boot中用于实现缓存的注解之一。在使用@Cacheable时,需要在方法上添加该注解,并指定缓存的名称和缓存的键值。根据不同的缓存解析器和缓存管理器,可以选择在方法参数或方法返回值上使用SpEL表达式来生成缓存的键值。 例如,在使用@Cacheable时,可以通过在方法上添加该注解,并指定cacheNames和key属性来实现缓存功能。其中,cacheNames指定了要使用缓存的名称,可以通过在配置文件中配置相应的缓存管理器来定义这个名称。key属性用于生成缓存的键值,可以使用SpEL表达式来引用方法参数或其他属性,以生成动态的键值。 示例代码如下: ``` @Cacheable(cacheNames = "emp", key = "#name") public String getString1(String name) { // 方法的具体实现 } ``` 在上述示例中,@Cacheable注解被应用于方法getString1上。cacheNames属性指定了缓存的名称为"emp",key属性使用了SpEL表达式"#name"来引用方法的参数name作为缓存的键值。 需要注意的是,使用@Cacheable注解时,需要确保已经配置了合适的缓存解析器和缓存管理器。可以使用默认的SimpleCacheResolver或者自定义的CacheResolver类来实现灵活的缓存解析。 总结起来,@Cacheable注解可以通过指定cacheNames和key属性来实现方法级的缓存功能,使得方法的结果可以被缓存起来,提高系统的性能和响应速度。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [SpringBoot @Cacheable缓存注解的使用](https://blog.csdn.net/qq_28834355/article/details/109559302)[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^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [springboot @Cacheable 基本使用](https://blog.csdn.net/weixin_39602579/article/details/112044641)[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^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值