一、Redis的主从模式
通过执行replicaof命令,让一个服务器去复制另一个服务器的数据。被复制的服务器称为Master主服务,对主服务器进行复制的服务器称为Slave从服务器。
为保证数据副本的一致,主从库之间采用的是读写分离的方式。
读操作:主库、从库都可以接收。
写操作:首先到主库执行,然后,主库将写操作同步给从库。
实现原理步骤:
- 从服务器向主服务器发送SYNC命令
- 主服务器收到SYNC命令后,执行BGSAVE命令,在后台生成RDB文件,使用缓冲区记录从现在开始执行的所有的写命令。
- 当主服务器的BGSAVE命令执行完毕后,主服务器后将BGSAVE命令生成的RDB文件发送给从服务器,从服务器接收并载入这个RDB文件,将自己的数据库状态更新至主服务器执行BGSAVE命令时的数据库状态。
- 主服务器将记录在缓冲区里面的所有写命令发送给从服务器,从服务器执行这些写命令,将自己的数据库状态更新至主服务器数据库当前所处的状态。
二、哨兵机制
主从库模式下,如果从库发生故障了,客户端可以继续向主库或其他从库发送请求,进行相关的操作,但是如果主库发生故障了,那就直接会影响到从库的同步,因为从库没有相应的主库可以进行数据复制操作了。所以引入了哨兵机制,哨兵其实就是一个运行在特殊模式下的 Redis 进程,主从库实例运行的同时,它也在运行。哨兵主要负责的就是三个任务:监控主库运行状态,并判断主库是否客观下线。在主库客观下线后,选取新主库。选出新主库后,通知从库和客户端。
图片.png三、Redis集群
集群方案采用哈希槽来处理数据和实例之间的映射关系。一个切片集群共有 16384 个哈希槽,这些哈希槽类似于数据分区,每个键值对都会根据它的 key,被映射到一个哈希槽中。例如,如果集群中有 N 个实例,那么,每个实例上的槽个数为 16384/N 个。
图片.png
网友评论