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.ruedigermoellergroupId>
            <artifactId>fstartifactId>
            <version>2.57version>
        dependency>

注入redisson配置的bean

@Bean
public RedissonAutoConfigurationCustomizer redissonAutoConfigurationCustomizer(){
return config -> {config.setCodec(new FstCodec());};
}

你可能感兴趣的:(Java,redis,数据库,缓存)