小豆干 2017-10-18 01:50 采纳率: 0%
浏览 414

redis cluster 集群的一些疑问

集群已经搭建完成,3对主从,java程序应该调用哪个ip来进行读写。
为什么用Redis Desktop Manager看6个redis的数据,都只有0号库。

顺便问一下在没有网络的环境下能搭建集群吗。gem install redis命令 能怎么替换吗?

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2022-10-25 19:32
    关注
    不知道你这个问题是否已经解决, 如果还没有解决的话:
    • 你可以看下这个问题的回答https://ask.csdn.net/questions/7655799
    • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:Redis Cluster集群从节点挂掉后解决方案
    • 除此之外, 这篇博客: 关于redis cluster 集群模式,你必须知道的几件事情中的 3. redis集群数据一致性问题。redis集群不保证数据强一致性,有两种会导致丢失数据的情况。 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

          (1)主节点同步数据到从节点之前宕机,从节点升级为主节点,导致数据丢失。

      例如主节点A, 有一个从节点B, 主节点A收到set name zhangsan的命令后,处理结束后返回客户端成功,然后再异步去通知从节点B set命令。如果主节点A在返回客户端之后,通知从节点之前宕机,过一段时间之后会由集群的选举机制选举从节点B为新的主节点,但是B节点是没有name zhangsan这条数据的,即便过一会主节点A恢复,也会同步节点B的数据,name 这条数据就丢失了。

                解决方案:wait命令,将客户端阻塞,异步变同步。wait命令使用方式:wait 1 意思是等待主节点之前的所有写操作成功通知一个从节点之后返回。也可以加上超时时间,wait 1 1000 最长不能超过1秒返回,1秒后超时返回成功同步的从节点个数。

          (2)脑裂

      比如有集群:A a B b C c 主节点:A B C 从节点 a1 b1 c1 。 如果出现网络问题,集群脑裂成两个子集群 A B  a1 b1 c1和 C, 在多数节点的集群中,检测到C主节点宕机,c1从节点升级为主节点,网络恢复之后,C节点加入成为c1的从节点。就会导致网络分裂时期对C节点的数据写入丢失。

               解决方案:节点超时时间(node timeout)。主节点宕机超过node timeout后,从节点C1升级为主节点。如果主节点C在超过node timeout后,还是无法感知大多数的主节点,则变为error状态并拒绝写入操作。

       


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

报告相同问题?

悬赏问题

  • ¥20 usb设备兼容性问题
  • ¥15 错误(10048): “调用exui内部功能”库命令的参数“参数4”不能接受空数据。怎么解决啊
  • ¥15 安装svn网络有问题怎么办
  • ¥15 Python爬取指定微博话题下的内容,保存为txt
  • ¥15 vue2登录调用后端接口如何实现
  • ¥65 永磁型步进电机PID算法
  • ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
  • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
  • ¥15 如何处理复杂数据表格的除法运算
  • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)