• Redis与分布式-哨兵模式


    接上文 Redis与分布式-主从复制

    1.哨兵模式

    在这里插入图片描述
    在这里插入图片描述
    启动一个哨兵,只需要修改配置文件即可,

    sentinel monitor lbwnb 1247.0.0.1 6001 1
    
    • 1

    先将所有服务关闭,然后修改配置文件,redis Master,redis Slave,redis Slave 2都是同样的修改方式
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    启动哨兵在这里插入图片描述
    先关闭哨兵服务,开启6001、6002、6003服务后再开启哨兵服务在这里插入图片描述
    在这里插入图片描述在这里插入图片描述
    启动哨兵后,会自动监控主节点,还会显示哪些节点是作为从节点存在的。
    26505461aba6fe32628ed934d.png)

    此时把主节点6001关闭,查看会发生什么。
    在这里插入图片描述
    此时再启动6001服务
    在这里插入图片描述
    此时6001和6001同步,6001会从6003同步数据
    在这里插入图片描述
    这里哨兵把6003作为了新的主节点,而不是6002,是遵循了以下规则:
    在这里插入图片描述
    但是如果哨兵挂了可能会影响。此时可配置多个哨兵,只需要将哨兵的配置复制以下,然后修改端口,这样就可以启动多个哨兵。
    启动3个哨兵(一主二从),把最后一个值改为2:
    先把6001,6002,6003给关闭。然后复制三个redis sentinel
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    先启动6001,6002,6003三个服务,然后启动上边3个修改后的哨兵

    # 启动服务
    redis-server.exe redis.windows.conf
    
    • 1
    • 2

    在这里插入图片描述

    # 启动哨兵
    redis-server.exe redis.windows.conf --sentinel
    
    • 1
    • 2

    在这里插入图片描述

    此时6003为6002和6001的主节点。此时将6003主节点进行关闭,查看状态。
    在这里插入图片描述
    针对哨兵重新选举新的节点后,java中的redis怎么感知?如下:
    先导入依赖

        <dependency>
            <groupId>redis.clients</groupId>
            <artifactId>jedis</artifactId>
            <version>4.2.1</version>
        </dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5

    在这里插入图片描述
    在这里插入图片描述
    java操作redis的sentinel进行写入,能正常读取
    在这里插入图片描述
    redis客户端读取java写入的值,也正常读取
    在这里插入图片描述

  • 相关阅读:
    Python与HTTP服务交互
    从0开始学c语言-33-动态内存管理
    前端html原生页面兼容多端H5和移动端适配方案
    子进程信号继承;kill+raise+alarm+pause+信号发生接收和处理+信号屏蔽
    Apache Kylin的入门学习
    11.24直播预告 | AIGC,看热闹不如看门道
    qt线程介绍
    使用vxe-table 制作编辑表格
    Leetcode70. 爬楼梯
    dhrystone和coremark测试比较
  • 原文地址:https://blog.csdn.net/weixin_43917045/article/details/133379523