Redis高阶
zhaolengquan Lv3

假设我们只有一个Redis实例,数据是都保存在内存中的,如果此时Redis故障宕机了,这就意味着业务数据全部丢失了,这是无法接受的,如何处理呢?

这就需要Redis有持久化的能力,具体来说就是把内存中的数据持久化到磁盘,实例宕机时,我们可以从磁盘中快速恢复。所以Redis提供了两种持久化方式,RDB和AOF。分别对应数据快照和日志追加方式持久化。他们互相补充,实现了Redis的持久化功能。

有了数据的持久化,也不能高枕无忧。当实例宕机后,如果我们从磁盘中恢复数据,恢复也是需要时间的,时间越长,对业务的影响也越大。

针对这个问题的解决方案就是采用多个副本,我们需要Redis实时保持多个副本的数据同步,也就是主从复制。这样当一个实例宕机后,我们还有其他完整的副本可以使用。只要把副本提升为主节点,继续提供服务就可以了,避免数据恢复对业务的影响。

再进一步思考,主节点宕机我们把从节点提升为主节点这个过程是手动的,手动方式也就意味着不能第一时间对业务进行救援,这就需要主从主动切换,也就是哨兵模式,哨兵可以实时检测主节点的心跳,当主节点故障,自动把从节点提升为主节点,实现故障转移,整个过程无需人工干预,程序自动完成。减少了故障带来的影响。

 Comments