redis之事务&&主从复制

开启事务

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,主机又复活了,从机还能不能继续连接这个主机?

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.conf目录下新建一个sentinel.conf文件,里面的内容是sentinel monitor 被监控的redis主机名字 127.0.0.1 端口号 num最后的num参数是主机投票数>=num的,成为主机。

转载于:https://www.cnblogs.com/qukingblog/p/7475286.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值