redisson使用报错Error creating bean with name 'redissonClient':

报错内容是:

 Error creating bean with name 'redissonClient': Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.redisson.api.RedissonClient]: Factory method 'create' threw exception; nested exception is java.lang.NoSuchMethodError: io.netty.channel.nio.NioEventLoopGroup.<init>(ILjava/util/concurrent/ThreadFactory;)V

我使用的redisson版本是3.10.7

最后通过调试源码发现,我用的netty版本过高,然后经过几番测试,使用了netty  4.1.36.Final

目前redisson不支持netty5,同时3.10.7版本的redisson,不支持部分 netty4.0.x版本,所以使用redisson时需要注意了

解决了上个问题后,有遇到了一个问题,那就是我分明配置了redisson node-address为远程地址,但是redisson 却要去连接我本地的地址,即 127.0.0.1,也就是说redisson 连接的地址跟我配置的redis的地址不一致,具体可见下图

可以看到第一步先从我配置的远端服务器抓取配置,接下来竟然直接连我的本地了,那么可想而知,肯定是连接不上的了,后来调试源码,忽然想到是不是自己的redis-cluster配置的有问题,查了查进程,发现redis-server的进程都在,后来突然想到,redis的进程都在,但并不是cluster状态,然后查redis集群的配置方法,发现,除了基本的更改配置文件,想要启动集群,需要分两步

1.启动redis各个节点

2.通过redis-cli 去创建集群

而我的问题就是没有执行第2步,然后执行第2步,再次测试终于连接上了,

这个报错还有另外一种可能那就是,redis.conf文件中bind配置错误,亲测,在redis.conf中无论是 注释掉 bind 还是 bind 绑定地址是0.0.0.0还是127.0.0.1都会出现这个问题,解决方法就是bind 的值设置为机器真实IP,也就是内网IP 或者外网IP,根据你的应用来决定。当然这是构建redis-cluster 所需要的设置,如果是单机的redis,注释掉bind,或者设置为0.0.0.0是更好的选择

当使用redis-cli 连接redis-cluster时 使用命令 :

redis-cli -c -h 任意节点IP -p 端口号

关于redis-cluster的搭建,可以参考:

https://my.oschina.net/ruoli/blog/2252393

猜你喜欢

转载自blog.csdn.net/kanyun123/article/details/90699322