springboot整合redis---进阶篇(向缓存中存放List对象JSON格式、取出缓存中List对象、设置序列化、设置过期时间)

本文介绍了在SpringBoot中整合Redis时遇到的两个问题:如何使用@Cacheable将List对象以JSON格式存入缓存,并在后续请求中正确反序列化;以及如何设置缓存的过期时间。作者分享了手动添加缓存的方法,以及序列化模块的相关代码,强调了在没有参数的情况下使用方法名作为key。最后提到在service层设置过期时间的解决方案。

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

前提概要:

  学过redis的我觉得大家是否觉得@Cacheable、@CachePut、@CacheEvict、@Caching、@CacheConfig是好用呢,但是任何事物都是有利有弊呀。

  第一坑:@Cacheable来向redis缓存中存放List对象,我在想这么一个场景:从数据库查询出来所有员工信息,首先我不需要任何参数,我的目的知识查询出全部的信息,犯错点1:key不知道如何去写 查看笔记可知,我们没有参数的情况下我们还可以使用方法名作为key。图1

第二坑:当然我们可以使用@Cacheable去放缓存,key也指定好了,运行结束,查看Redis Desktop Manager发现缓存确实已经存放进去了,当我们再次请求的时候原理上是可以查询到缓存的吧,但是坑又来了。取出来缓存是JSON形式的,你需要反序列化到对象里呀,这一点我查询了很多博客文档,没有解决。

    困惑点1:在哪里加上反序列化操作

   困惑点2:在什么时候去加(有老师知道的可以评论一下,我在研究,先说声感谢)

   当然我也做了一些尝试,不过失败了,但是可以分享一下,因为对象序列化,那么我建一个类,里面是个List<Object>形式,我给这个类序列化,我也配置了相应的RedisTemplate和RedisManager想着照猫画虎去写,结果是行不通的。

完美解决:既然基于注解完不成,我退后原点,另找出路,手动去添加缓存,首先我执行方法,先查询缓存,查询到了万事大吉,查询不到好吧我去执行我的sql,把查询到的内容再放回缓存中。图2

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值