前言
今天跟小伙伴们一起学习Redis的主从、哨兵、Redis Cluster集群。
- Redis主从
- Redis哨兵
- Redis Cluster集群
1. Redis 主从
面试官经常会问到Redis的高可用。Redis高可用回答包括两个层面,一个就是数据不能丢失,或者说尽量减少丢失;另外一个就是保证Redis服务不中断。
- 对于尽量减少数据丢失,可以通过AOF和RDB保证。
- 对于保证服务不中断的话,Redis就不能单点部署,这时候我们先看下Redis主从。
1.1 Redsi主从概念
- Redis主从模式,就是部署多台Redis服务器,有主库和从库,它们之间通过主从复制,以保证数据副本的一致。
- 主从库之间采用的是读写分离的方式,其中主库负责读操作和写操作,从库则负责读操作。
- 如果Redis主库挂了,切换其中的从库成为主库。
1.2 Redis 主从同步过程
Redis主从同步包括三个阶段。
第一阶段:主从库间建立连接、协商同步。
- 从库向主库发送
psync
命令,告诉它要进行数据同步。 - 主库收到
psync
命令后,响应FULLRESYNC
命令(它表示第一次复制采用的是全量复制),并带上主库runID
和主库目前的复制进度offset
。
第二阶段:主库把数据同步到从库,从库收到数据后,完成本地加载。
- 主库执行
bgsave
命令,生成RDB
文件,接着将文件发给从库。从库接收到RDB
文件后,会先清空当前数据库,然后加载 RDB 文件。 - 主库把数据同步到从库的过程中,新来的写操作,会记录到
replication buffer
。