Redis08:Reids发布订阅、主从复制和哨兵模式

目录标题

一、Redis订阅发布

1、什么是发布和订阅?

  • Redis 发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息。
  • Redis 客户端可以订阅任意数量的频道。

2、发布订阅示意图

(1)客户端可以订阅频道如下图:

(2)当给这个频道发布消息后,消息就会发送给订阅的客户端

3、发布订阅的常用 命令

(1)subscribe
语法:subscribe channel [channel…]
功能:订阅一个或多个频道的信息
返回值:订阅的消息
(2)publish
语法:publish chanel message
功能:将信息发送到指定的频道。
返回值:数字。接收到消息订阅者的数量。
(3)psubscribe
语法:psubscribe pattern [pattern]
功能:订阅一个或多个符合给定模式的频道。模式以 * 作为通配符,例如:news.* 匹配所有以 news. 开头的频道。
返回值:订阅的信息。

示例1:

订阅端:

127.0.0.1:6379> subscribe hczstudy  #订阅hczstudy
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "hczstudy"
3) (integer) 1
1) "message"
2) "hczstudy"
3) "hello,hcz"
1) "message"
2) "hczstudy"  #返回订阅信息
3) "hello,hcz2"  #返回订阅信息

发送端:

127.0.0.1:6379> PUBLISH hczstudy "hello,hcz" #发送信息到订阅的频道
(integer) 1
127.0.0.1:6379> PUBLISH hczstudy "hello,hcz2"  #发送信息到订阅的频道
(integer) 1
127.0.0.1:6379> 

二、Redis主从复制

1、主从复制是什么?

  • 主机数据更新后根据配置和策略,自动同步到从机的 master/slave 机制,Master以写为主,Slave以读为主

2、一主二从原理

1、配从(库)不配主(库)

2、配从(库): slaveof 主库IP 主库端口

3、主写从读、读写分离

4、从连前后同

5、主断从待命、从断重新连

3、一主二从搭建

(1)一台服务器模拟三台主机:

第一步:将redis.conf 拷贝三份,名字分别是,redis6379.conf,redis6380.conf,redis6381.conf
第二步:修改三个文件的port端口,pid文件名,日志文件名,rdb文件名如:

port 6379

pidfile /var/run/redis_6379.pid

logfile "6379.log"

dbfilename dump6379.rdb

第三步:分别打开三个窗口模拟三台服务器,开启redis服务。

(2)查询主从信息:info replication

以上3个的角色都是主机(master)

(3)设置主从关系:
  • 在6380和6381主机上分别执行命令:slaveof 127.0.0.1 6379

(4)在主机上6379上进行写操作

注意

如果要永久设置该主从关系,就需要在配置文件上修改即可

(5)主写从读、读写分离:在6380和6381上执行写操作set k3 v3

(6)主机宕机:6379执行指令shutdown,并查看6380和6381的redis信息

(7)主机宕机后恢复:重启6379,并且执行写命令set k4 v4;6380和6381上分别执行get k4

(8)从机宕机:6380执行指令shutdown,并查看6379和6381的redis信息

(9)从机宕机后恢复:重启6380,并查看6380、6379和6381的redis信息

注意:从机跟master断开联系,必须重新连接,除非写进配置文件

(10)从机恢复连主机前,主机写操作:6379执行写命令set k5 v5,6380和6381分别执行命令get k5

(11)从机恢复连接主机,6380执行命令:slaveof 127.0.0.1 6379,并且执行命令:get k5

4、薪火相传的搭建

上一个Slave可以是下一个slave的Master,Slave同样可以接收其他 slaves的连接和同步请求,那么该slave作为了链条中下一个的master, 可以有效减轻master的写压力,去中心化降低风险。

  • 6379执行命令saveof 127.0.0.1 6381,并在6379和6381执行info replication

一台主机配多台从机,一台从机再配多台从机,从而实现了庞大的集群架构。同时也减轻了一台主机的压力,缺点是增加了服务器间的延迟。

5、谋朝篡位的搭建

当一个master宕机后,后面的slave可以立刻升为master,其后面的slave不用做任何修改。

第一步:主机宕机,6379执行命令:shutdown

第二步:6380断开主从关系,执行命令:SLAVEOF no one

第三步:重新搭建主从,6381执行命令:info replication,SLAVEOF 127.0.0.1 6380

第四步:之前主机恢复,重启6379的Redis服务,并执行命令:info replication

在6379主机宕机后,6380从机断开主从关系,6381开始还在原地待命;后来6380从机上位,6381投靠6380,6379主机即使回来但它已是孤寡老人,空头司令。

6、主从复制的原理

(1)全量复制
  • Slave启动成功连接到master后会发送一个sync命令
  • Master接到命令启动后台的存盘进程,同时收集所有接收到的用于修改数据集命令, 在后台进程执行完毕之后,master将传送整个数据文件到slave,以完成一次完全同步
  • slave服务在接收到数据库文件数据后,将其存盘并加载到内存中
  • 只要是重新连接master,一次完全同步(全量复制) 将被自动执行
(2)增量复制
  • Master将新的所有收集到的修改命令依次传给slave,完成同步。

三、哨兵模式

1、哨兵模式的原理

2、哨兵模式的搭建

(1)创建sentinel.conf文件
  • 编辑里边的内容:sentinel monitor myredis 127.0.0.1 6379 1,表示:指定监控主机的ip地址,port端口,得到哨兵的投票数(当哨兵投票数大于或者等于此数时切换主从关系)。
(2)新开窗口,启动哨兵
  • redis-sentinel hczconfig/sentinel.conf

(3)主机宕机:从机选举中产生新的主机
  • 哪个从机会被选举为主机呢?根据优先级别:slave-priority
  • 原主机重启后会变为从机

(4)等待从机投票,在sentinel窗口中查看打印信息

(5)查看6380和6381的redis信息

(6)原主机恢复,启动6379

3、故障恢复

4、小结

(1)操作步骤
  • 查看主从复制关系命令:info replication
  • 设置主从关系命令:slaveof 主机ip 主机port
  • 开启哨兵模式命令:./redis-sentinel sentinel.conf
  • 主从复制原则:开始是全量复制,之后是增量复制
  • 哨兵模式三大任务:监控,提醒,自动故障迁移
(2)优点
  1. 哨兵集群,基于主从复制模式,所有的主从复制优点,其都有
  2. 主从可以切换,故障可以转移
  3. 哨兵模式就是主从复制模式的升级,从手动到自动,更加健壮
(3)缺点

Redis的主从复制最大的缺点就是延迟,主机负责写,从机负责备份,这个过程有一定的延迟,当系统很繁忙的时候,延迟问题会更加严重,从机器数量的增加也会使这个问题更加严重。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

@烟雨倾城ゝ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值