Redis主从同步原理
一台普通的redis服务器每秒一般处理100多个命令,当存在大量查询或者写命令时,服务器可能因承载不了而崩溃或者效率很低,此时可以通过配置从服务器来帮忙分担请求,达到降低负载的目的。
细节
- redis是使用异步复制
- 一个主服务器可以有多个从服务器,且每个从服务器下又可以有多个从服务器,展开就如同树型结构一般
- redis主从复制操作并不会阻塞主服务器,也就是说当有多个从服务器向主服务器进行连接同步时,主服务器依然可以接收请求
- 主从复制可以用来增强扩展性,使用多个从服务器来处理读请求,也可以处理比较复杂的排序功能,也可以简单的用来做数据冗余
- 使用主从复制可以为主服务器避免把数据写入磁盘的消耗
主从同步的原理
- 当从服务器首次连接或者断开重连主服务器时,会进行一次完全同步,发送一个sync命令
- 主服务器在后台创建一个快照,但是不停止接收客户端请求,只是会将这些写命令存入到缓存区
- 当主服务器创建快照完毕后,发送到所有的从服务器,让从服务器进行数据的同步,此时从服务器会将旧数据全部清空,同时主服务器通过命令流将缓存在缓冲区的写命令下发到所有的从服务器中进行同步