一次redisson版本升级带来的故障
1、现象
- 查询redis报错
- 问题发生的时间明显是集中在某次发版之后
2022-03-09 02:06:31,378 ERROR [redisson-netty-4-6] handler.CommandDecoder(202) - Unable to decode data. channel: [id: 0xf4a0e3e9, L:/10.120.21.253:40182 - R:r-bp156e869288bf04.redis.rds.aliyuncs.com/172.28.57.23:6379], reply: ReplayingDecoderByteBuf(ridx=38, widx=38), command: (GET), params: [d0c10ff881174051ae83e6c341568a2b_322c760cc0824a939c800af91f1573ca_h5_dragableTips]
2、问题根因
升级了公司的标准化框架,对应的redisson版本从从 2.10.7升级到了 3.10.6,而版本3.10.6是存在bug的
详见redisson的github issues描述
3、解决办法
- 采用低版本的redis
- 显示指定RedissonClient的序列化方式
示例代码
@Bean
public RedissonClient redisson() throws IOException {
//使用json序列化方式
Codec codec = new JsonJacksonCodec();
Config config = new Config();
config.setCodec(codec);
SingleServerConfig serverConfig = config.useSingleServer()
.setAddress(redissonProperties.getAddress())
.setTimeout(redissonProperties.getTimeout())
.setConnectionPoolSize(redissonProperties.getConnectionPoolSize())
.setConnectionMinimumIdleSize(redissonProperties.getConnectionMinimumIdleSize());
if(StringUtils.isNotBlank(redissonProperties.getPassword())) {
serverConfig.setPassword(redissonProperties.getPassword());
}
return Redisson.create(config);
}
正文到此结束