Redis的主从模式

六、Redis的主从模式

使用一个Redis实例作为主机(Master),其余的作为从机(Slaver)。主机和从机的数据完全一致,主机支持数据的写入和读取等各项操作,而从机则只支持与主机数据的同步和读取。也就是说,客户端可以将数据写入到主机,由主机自动将数据的写入操作同步到从机。主从模式很好的解决了数据备份问题,并且由于主从服务数据几乎是一致的,因而可以将写入数据的命令发送给主机执行,而读取数据的命令发送给不同的从机执行,从而达到读写分离的目的。

在这里插入图片描述

1. 修改配置文件

  1. 拷贝多个redis.conf文件
    使用6379 6380 6381 三个端口来模拟

  2. 开启daemonize yes
    Windows:不支持
    Linux:General 区域的 daemonize yes

  3. pid文件名字
    Windows:不支持
    Linux:General 区域的
    pidfile /var/run/redis79.pid(redis79.conf)
    pidfile /var/run/redis80.pid(redis80.conf)
    pidfile /var/run/redis81.pid(redis81.conf)

  4. 指定端口
    Windows / Linux: General 区域的
    port 6379(redis79.conf)
    port 6380(redis80.conf)
    port 6381(redis81.conf)

  5. log文件名字
    Windows / Linux: General 区域的
    logfile “6379.log”(redis79.conf)
    logfile “6380.log”(redis80.conf)
    logfile “6381.log”(redis81.conf)

  6. dump.rdb名字
    Windows / Linux:SNAPSHOTTING 区域的
    dbfilename dump6379.rdb(redis79.conf)
    dbfilename dump6380.rdb(redis80.conf)
    dbfilename dump6381.rdb(redis81.conf)

常用命令:

#查看当前server的信息
info replication
#从属命令
slaveof 127.0.0.1 6379
#清屏
clear
#关闭服务
shutdown

2. Redis主从模式中常用的三招

2.1 一主两从
  1. 切入点问题?slave1、slave2是从头开始复制还是从切入点开始复制?
    一旦主从关系形成,从机将享有主机所有的数据即从头开始复制主机所有的数据。
  2. 从机是否可以写?
    从机只能读。
  3. 主机shutdown后情况如何?从机是上位还是原地待命
    主机宕机之后,从机将原地待命并保留M所有的数据(M最近一次的数据保存可能会丢失)
  4. 主机又回来了后,主机新增记录,从机还能否顺利复制?
    主机重新连接之后将与从机重新建立主从关系,并且主机的新增记录仍能同步至从机。
  5. 其中一台从机down后情况如何?依照原有它能跟上大部队吗?
    从机宕机之后,需要重新建立主从关系,当重新与主机建立主从关系之后,仍共享主机所有数据。
2.2 薪火相传

去中心化,上一个slave 是下一个salve 的 master

2.3 反客为主

slaveof no one: 使当前库停止与其他库的同步,转成主库

3. 哨兵模式

哨兵模式Sentinel,就是反客为主自动版本

步骤:

1)当配置文件目录下,新增一个sentinel.conf配置文件
2)添加如下内容:

# 当前Sentinel服务运行的端口
port 26379

# Sentinel去监视一个名为mymaster的主redis实例,
# 这个主实例的IP地址为本机地址127.0.0.1,端口号为6379,
# 而将这个主实例判断为失效至少需要1个Sentinel进程的同意,只要同意Sentinel的数量不达标,自动failover就不会执行
sentinel monitor mymaster 127.0.0.1 6379 1

# down-after-milliseconds指定了Sentinel认为Redis实例已经失效所需的毫秒数。
# 当实例超过该时间没有返回PING,或者直接返回错误,那么Sentinel将这个实例标记为主观下线。
# 只有一个Sentinel进程将实例标记为主观下线并不一定会引起实例的自动故障迁移:只有在足够数量的Sentinel都将一个实例标记为主观下线之后,实例才会被标记为客观下线。
# 这时自动故障迁移才会执行
sentinel down-after-milliseconds mymaster 5000

# parallel-syncs指定了在执行故障转移时,最多可以有多少个从Redis实例在同步新的主实例,
# 在从Redis实例较多的情况下这个数字越小,同步的时间越长,完成故障转移所需的时间就越长
sentinel parallel-syncs mymaster 1

# 如果在failover-timeout该时间(ms)内未能完成failover操作,则认为该failover失败
sentinel failover-timeout mymaster 15000

3)启动哨兵

redis-server  sentinel.conf --sentinel

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

JTZ001

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

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

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

打赏作者

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

抵扣说明:

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

余额充值