redis主从结构闲聊(一主二从):
- 如果主机挂了,那么所有的slave将原地待命,不会有slave篡位,换句话说,他们还都是slave模式,一旦主机回复启动,slave立刻又能和主机建立连接,继续主从模式
- 如果其中一个slave挂了,那么其他两个继续原来的主从工作模式,只是这个挂了的slave再回复启动的时候,它将不再是原来的那个slave,而且和原来的那个主从系统已经没有关系了,自己变成了一个独立的机器,并且是master,如果想和原来的那个主从系统再次建立练习,需要重新执行命令:> SLAVEOF 主机Ip+port
- 从机没有写的权限,如果对从机执行写的命令,将会报错:can not write read only
- 一旦一个redis被slave到一个master上,那么它会同步该master上的所有数据,而不仅仅是从连接上master的时间点开始同步master数据,换句话说它也会把在这个时间点之前,master上的数据也同步过来
redis薪火相传:
一个redis节点既可以是主节点,也可以是从节点,换句话说:一个节点可以同时拥有两重身份,主和从,比如:A是主节点,B slave of A,而 C slave of B,所以B 既是A的slave,又是 C 的master,但是通过
info replication命令得到的结果是它的属性仍然是个从节点,这时对 A 的修改会同时传递到 B 和 C,这就叫薪火相传
redis反客为主:
如果master 节点挂了,那么可以通过命令手动的设置其中一个 slave 节点为新的master节点:slaveof no one,而原来的master如果再恢复启动的话,和前面一样,也是一个独立的master节点
哨兵模式:
一个哨兵可以监控多个master节点,当master节点宕机后,哨兵会检测到,并且从slave节点里选出一个新的master节点。当原来的那个master再次恢复启动的时候,它将被哨兵检测到已启动,但是此时它将不再是一个单独是master节点,而是变成一个slave节点,是新的master的slave,这点是和非哨兵模式不同的地方
redis实现秒杀场景:
秒杀需要注意两点:
1) 秒杀成功的用户需要把userid 加入到redis的set集合里,该set集合里存储的都是秒杀成功的user
2)减库存
3)一个用户只能秒杀一次的限制,当用户秒杀的时候,先看set集合里该用户是否已经存在,如果存在说明ta已经秒杀过,所以直接拒绝