原创

一次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升级bug

详见redisson的github issues描述

3、解决办法

redisson升级版本报错的原因

  • 采用低版本的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);
    }
正文到此结束
本文目录