redis你意想不到的坑-集合存取后的操作与获取时间超时java.lang.UnsupportedOperationException与Redis command timed out

探讨了在SpringBoot环境下,使用JDK序列化方式与Redis结合时出现的UnsupportedOperationException异常,以及解决此问题的方法。同时,介绍了如何避免连接超时的QueryTimeoutException异常。

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

环境、

springboot2

redis3.2.0

序列化方式使用JDK的序列化方式(不明白的可以看看我之前的博客)

应用场景:

集合均为ArryList<T>

1、存入集合A与集合B

2、获取集合A与集合B

3、获取后的集合A调用addAll存入集合B,将两个集合合并

报错信息:java.lang.UnsupportedOperationException

经验证,获取集合后两个集合进行Add时会报错,经研究猜测,其内部处理的时候是通过数组进行返回的,并转为了Array,而内部正好没有add方法导致的。查阅了部分资料,个人认为,序列化方式时选择json序列化数据的时候获取的集合为jsonArray,一样会报错。

解决方式,例子:

JSON topJson = (JSON) JSON.toJSON( jedisUtil.get(ICache.CACHE_RISK_GROUP_FIST + topGroup));
List<AifacePersonExtend> topJsonArr = JSONArray.parseArray(topJson.toJSONString(),AifacePersonExtend.class);

使用alibaba的fastjson进行转换即可,亲测可行。

 

另外一个报错信息:

org.springframework.dao.QueryTimeoutException: Redis command timed out; nested exception is io.lettuce.core.RedisCommandTimeoutException: Command timed out after 10 second(s)

很简单,就是连接超时的,修改下配置,原来我设置的是10秒改为100秒就好了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

冒菜-码农

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值