美文网首页
redisson与sping boot版本不兼容的问题

redisson与sping boot版本不兼容的问题

作者: 十毛tenmao | 来源:发表于2021-11-29 23:49 被阅读0次

分布式锁redisson依赖了特定的spring boot版本,如果版本不兼容就可能出现问题

问题 - 递归循环

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版本

相关文章

网友评论

      本文标题:redisson与sping boot版本不兼容的问题

      本文链接:https://www.haomeiwen.com/subject/jwyrxrtx.html