redisson与sping boot版本不兼容的问题 zAdd 出现死循环
Post Time:2023-01-29 17:55:01 Views:4723
问题 - 递归循环
java.lang.StackOverflowError
at org.springframework.data.redis.connection.DefaultedRedisConnection.zAdd(DefaultedRedisConnection.java:863)
at org.springframework.data.redis.connection.DefaultedRedisConnection.zAdd(DefaultedRedisConnection.java:863)
at org.springframework.data.redis.connection.DefaultedRedisConnection.zAdd(DefaultedRedisConnection.java:863)
at org.springframework.data.redis.connection.DefaultedRedisConnection.zAdd(DefaultedRedisConnection.java:863)
问题起源
org.springframework.data.redis.connection.DefaultedRedisConnection
@Override
@Deprecated
default Boolean zAdd(byte[] key, double score, byte[] value) {
return zSetCommands().zAdd(key, score, value);
}
org.springframework.data.redis.connection.RedisConnection
default RedisZSetCommands zSetCommands() {
return this;
}
是因为zSetCommands()一直返回this,然后递归调用自身的zAdd方法,引起栈溢出
版本冲突
- spring-boot版本
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.12.RELEASE</version>
</parent>
- redisson版本
<dependency>
<groupId>org.redisson</groupId>
<artifactId>redisson-spring-boot-starter</artifactId>
<version>3.16.4</version>
</dependency>
解决办法
升级spring-boot版本到2.5.7及以上或者redisson降级到3.15.6
版本匹配,可以在redisson-spring-boot-starter中确认依赖的spring-boot版本
暂无评论
「人生在世,留句话给我吧」
QQ登录免填信息

撰写评论
本博客内所有原创和翻译的文章的版权归本人所有,允许第三方转载,但转载时请务必保留作者名,并注明出处链接,否则本人将保留追究其法律责任的权利。