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());};
}
本文来自博客园,作者:HumorChen99,转载请注明原文链接:https://www.cnblogs.com/HumorChen/p/18039421