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

2021-07-26  本文已影响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),分片进行操作噢~

上一篇下一篇

猜你喜欢

热点阅读