美文网首页
Java快速保成使用redis主从(主备)+哨兵模式

Java快速保成使用redis主从(主备)+哨兵模式

作者: 啊勤小伙子 | 来源:发表于2021-07-26 22:00 被阅读0次

    开篇点题

    文章主旨是快速且保证成功的结合哨兵监控去使用redis的主备模式。起因公司需要,俺就干,玻璃碎没碎我不知,我只知道这次我干到redis裂了些。

    途中解惑

    首先重中之重是要区分什么是主从,什么是主备,区分不开,这活干的毫无意义。主从,主备,集群的目的是为了解决单点的缺陷问题,单点缺陷就是单点故障容量压力。

    先上一图!

    架构图

    架构而言主从,主备都是一样的。真正区分的是代码上面的使用区分。代码层面上对于读写分离的操作决定了你是使用主从还是主备,实际上严格来说,主从必须是读写分离,主的redis做写操作,从的redis做读操作;主备的话主的redis用作读跟写,从redis只是用作于备用等主的挂了顶上。

    主备模式下,相对于单点来说解决了单点故障,压力和容量并没有得到解决。当然跟业务场景有关

    主从模式下,相对于单点来说解决了单点故障同时通过集群进行解决压力,容量的问题。

    直入实淦

    安装好的Vmware虚拟机以及centos7

    为了保成我还是贴一下如何安装虚拟机吧

    尝试吧少年

    安装完成,下载redis,我这边使用是6.2.3,官网下载即可

    https://download.redis.io/releases/?_ga=2.201444305.1325061346.1627302000-795623212.1627302000

    准备4个redis的配置文件,4个sentinel的配置文件

    6379.conf配置

    port 6379

    #bind 127.0.0.1 -::1

    pidfile "/var/run/redis_6379.pid"

    logfile "/ken/redis-6.2.3/src/6379logfile.log"

    protected-mode no

    daemonize yes

    6380.conf配置

    port 6380

    #bind 127.0.0.1 -::1

    pidfile "/var/run/redis_6380.pid"

    logfile "/ken/redis-6.2.3/src/6380logfile.log"

    protected-mode no

    daemonize yes

    6381.conf配置

    port 6381

    #bind 127.0.0.1 -::1

    pidfile "/var/run/redis_6381.pid"

    logfile "/ken/redis-6.2.3/src/6381logfile.log"

    protected-mode no

    daemonize yes

    6382.conf配置

    port 6382

    #bind 127.0.0.1 -::1

    pidfile "/var/run/redis_6382.pid"

    logfile "/ken/redis-6.2.3/src/6382logfile.log"

    protected-mode no

    daemonize yes

    26379.conf

    port 26379

    sentinel monitor mymaster 192.168.38.128 6379 3

    daemonize yes

    protected-mode no

    26380.conf

    port 26380

    sentinel monitor mymaster 192.168.38.128 6379 3

    daemonize yes

    protected-mode no

    26381.conf

    port 26381

    sentinel monitor mymaster 192.168.38.128 6379 3

    daemonize yes

    protected-mode no

    26382.conf

    port 26382

    sentinel monitor mymaster 192.168.38.128 6379 3

    daemonize yes

    protected-mode no

    常用命令(粗体为命令)

    info replication      查看主从信息

    info sentinel           查看哨兵信息

    ./redis-server  哨兵配置文件目录  --sentinel                         启动哨兵命令

    ./redis-server  redis配置目录                                                 启动redis命令

    ./redis-cli -h ip地址 -p 端口号                                                 进入指定redis

    keys *                     查看当前库数据

    exit                         退出

    ps -fe|grep redis   查看redis进程

    replicaof no one     解除主从追随关系

    kill -9 端口号             结束进程

    配置追随关系

    流程说明:

    I开启redis且进入从机配置追随的主机

    1.查看当前redis进程 2.启动成功 3.配置6380追随 4.查看6380追随信息 5.配置6381主从且查看结果 6.配置6382主从且查看结果

    II启动哨兵

    1.启动所有哨兵

    III Linux测试

    Finished

    IIII idea代码测试

    yml配置文件 redisUtil类 pom

    <?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.example</groupId> <artifactId>MavenDemo</artifactId> <version>1.0-SNAPSHOT</version> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.0.RELEASE</version> </parent> <dependencies> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.16.10</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> </dependency> </dependencies></project>

    单元测试类 set get

    总结一下

    呼应开篇,使用主备是因为这样做已然满足公司的使用场景了,没有最完美只有最合适。主备模式优点是线上固有的调用redis代码的方式——无需大改,前提是合适具体的场景(可以忽视容量,以及压力,这也就是缺点)!如果涉及高并发,高可用的情景需要结合网络层代理,集群(Cluster),分片进行操作噢~

    相关文章

      网友评论

          本文标题:Java快速保成使用redis主从(主备)+哨兵模式

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