关于#redis#的问题,如何解决?

redisson 连接 redis cluster 不可连接

img

大概就是这样,首先我的ip useClusterServers().addNodeAddress(strings) 是正确的, 我同样使用的 lettuce连接集群,可以使用.
用 GUI工具连接单个节点也能使用.

大概查了一下这个ip 是用 create命令创建集群是 redis自动生成的配置文件里面的数据, 而每个节点自己配置文件表示自己ip时 会变成这个ip

配置文件加 cluster-announce-ip <外网ip> docker下暂时解决

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 你可以看下这个问题的回答https://ask.csdn.net/questions/367002
  • 这篇博客也不错, 你可以看下Redis Cluster集群从节点挂掉后解决方案
  • 除此之外, 这篇博客: 总结Redis Cluster原理+基本使用+运维注意事项中的 1.客户端ASK重定向流程 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    Redis集群支持在线迁移槽(slot)和数据来完成水平伸缩,当slot对应的数据从源节点到目标节点迁移过程中,客户端需要做到智能识别,保证键命令可正常执行。

    例如当一个slot数据从源节点迁移到目标节点时,期间可能出现一部分数据在源节点,而另一部分在目标节点,当出现该情况时,客户端键命令执行流程将发生变化,如下所示:

    • 客户端根据本地slots缓存发送命令到源节点,如果存在键对象则直接执行并返回结果给客户端。
    • 如果键对象不存在,则可能存在于目标节点,这时源节点会回复ASK重定向异常。格式如下:(error)ASK{slot}{targetIP}: {targetPort}。
    • 客户端从ASK重定向异常提取出目标节点信息,发送asking命令到目标节点打开客户端连接标识,再执行键命令。如果存在则执行,不存在则返回不存在信息。

    ASK重定向整体流程如图所示:

    ASK与MOVED虽然都是对客户端的重定向控制,但是有着本质区别。ASK重定向说明集群正在进行slot数据迁移,客户端无法知道什么时候迁移完成,因此只能是临时性的重定向,客户端不会更新slots缓存。但是MOVED重定向说明键对应的槽已经明确指定到新的节点,因此需要更新slots缓存。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^