redis之事务主从复制

 2023-09-15 阅读 23 评论 0

摘要:开启事务 MULTI //事务开启 set k1 v1 set k2 v2 set k3 v3 get k3 EXEC //执行事务,一次性执行全部的命令 1) OK 2) OK 3) OK 4) "v3" //如果不想继续执行事务,可以放弃事务 DISCARD //放弃事务 //如果在开启事务的过程中,发生错误,那么

开启事务

MULTI  //事务开启
set k1 v1
set k2 v2
set k3 v3
get k3
EXEC //执行事务,一次性执行全部的命令
1) OK
2) OK
3) OK
4) "v3"
//如果不想继续执行事务,可以放弃事务
DISCARD //放弃事务
//如果在开启事务的过程中,发生错误,那么事务都将失败,要么一起成功,要么一起失败
//如果是在开启事务过程中没有错误,执行的时候错误,也就是最后一步EXEC错误,那就冤有头债有主,就那个错误的操作失败

主从复制

可以在一台机器上模拟这个过程,将redis.conf复制三份,每份修改端口号和日志名称即可,打开终端,
假如第一台机器为主,其它两台为从,那好,我们要把第一台机器上的东西复制到其它两台,可以用如下命令SLAVEOF 端口号端口号为主机redis端口,查看状态命令(INFO replication):

127.0.0.1:6379> INFO replication
# Replication
role:master   //扮演的角色,主机
connected_slaves:0   //它带的小弟(从机个数)
master_replid:ae92f780fa4564caa1ca94be1e0e7384f2625a53
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:0
second_repl_offset:-1
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0

下面分析特殊情况:

1,假如,主机死了(宕机了),从机会不会上位成为主机??thinking

2,主机又复活了,从机还能不能继续连接这个主机?

redis主从down,3,从机死了又复活了,还能继续连接这个主机吗?

第一个答案NO,第二个YES,第三个答案是与主机断开了,必须重新执行SLAVEOF命令连接主机端口,否则会默认新开了一个主机。

Are you understand ?

薪火相传:

假如还是用上面的三个redis,将它们命名为A,B,C,刚才的情况是A为主机,B,C都是从机,现在变成了,A为主机,B为连接A的从机,C为连接B的从机,那么B的角色是slaver or master ? 答案是slaver,虽然它相对C来说是master,但是总体而言,它只是个包工头的角色,所以还是slaver。

反客为主:

主机A挂掉了,从B和C中选出一个当主机有这样一个命令,例如在B中使用SLAVEOF no one自立山头,变成老大了,角色变成了master,C可以用SLAVEOF命令连接新老大端口,当A重新回来时,也就没它的事,成了光杆司令。

哨兵模式(反客为主自动版):

redis主从复制、主机挂掉后,从机投票成为主机的过程,在redis.conf目录下新建一个sentinel.conf文件,里面的内容是sentinel monitor 被监控的redis主机名字 127.0.0.1 端口号 num最后的num参数是主机投票数>=num的,成为主机。

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/1/62087.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息