redis redisson报错 Unsupported protocol问题原因和解决方案

redis redisson报错 Unsupported protocol问题原因和解决方案

redisson没对老版本协议做兼容处理,一旦你升级版本就出现不兼容协议就这样报错了~
不对老版本协议做兼容措施,有点憨八龟~
Redisson 在 3.13.0 and 3.19.0 更换了默认的协议,修改版本的时候小心点~

报错日志

比较典型的信息:Unsupported protocol version

java.io.IOException: Unsupported protocol version 34
content: org.redisson.client.RedisException: Unexpected exception while processing command
content: io.netty.handler.codec.DecoderException: java.io.IOException: Unsupported protocol version 34
content: at org.jboss.marshalling.river.RiverUnmarshaller.start(RiverUnmarshaller.java:1375)
content: at org.redisson.command.CommandAsyncService.convertException(CommandAsyncService.java:324)

报错原因

版本: 3.10.6 默认使用了FstCodec 编码
3.18.0 默认编码使用:MarshallingCodec,官方已经明确不再建议使用 FstCodec编码,并且移除了Fst相关依赖
读取原来编码写入到redis里的数据解析的时候就报错了,协议不支持。

解决办法

两种解决办法,要么用新版本要么用老版本

删数据

清理掉老协议写入的数据

将新版redisson设置使用捞的Fst协议

导入maven依赖

		<dependency>
            <groupId>de.ruedigermoeller</groupId>
            <artifactId>fst</artifactId>
            <version>2.57</version>
        </dependency>

注入redisson配置的bean

@Bean
public RedissonAutoConfigurationCustomizer redissonAutoConfigurationCustomizer(){
return config -> {config.setCodec(new FstCodec());};
}
posted @ 2024-02-02 11:03  HumorChen99  阅读(758)  评论(0编辑  收藏  举报  来源