1、Redis支持主从(master-slave)复制功能,当主服务器更新数据时能同步到从服务器
(1)在从Redis服务器的redis.conf中添加slaveof masterip masterport即可主Redis服务器不需要做任何配置
(2)在启动Redis服务器时指定主服务器 redis-server -- slave materip masterport
(3)在客户端指定主服务器redis>slaveof masterip masterport SLAVEOF命令会会停止与原主服务器的同步,转向新的主服务器同步
原理
(1)Redis主服务器等待命令SYNC的进入,Redis从服务(连接或重新连接)发送SYNC命令
(2)Redis主服务接受SYNC命令后开始执行BGSAVE命令,并使用缓冲区记录BGSAVE之后执行所有的写命令,从服务跟配置选项来决定是否使用现有的数据来处理客户端的命令请求,还是向发送请求的客户端返回错误
(3)主服务器执行BGSAVE完毕之后 向从服务发送快照文件,并在发送期间继续使用缓冲区记录被执行的写命令,此时从服务丢弃所有旧数据,开始载入主服务器发来的快照文件
(4)主服务器快照文件发送完毕,开始向从服务器发送存储在缓冲区里的写命令,从服务器完成对快照文件的解释操作,像往常一样开始接收命令请求
(5)主服务器缓冲区存储的写命令发送完毕;从现在开始没执行一条命令,就向从服务器发送同样的命令,从服务器执行完主服务器发来
的存储在缓冲区的写命令,并从现在开始,执行主服务器发来的每一个写命令。
注:从服务在进行同步时,会清空自己的所有数据,从服务器在和主服务器进行初始连接时。数据库原有的所有数据将都丢失,并替换成主服务器发来的数据
redis验证快照文件和AOF文件两个命令程序:
redis-check-aof --fix <file.aof> 命令会扫描给定 的aof文件 寻找不正确的命令 找到第一个出错的命令后 会删除之后的所有命令,只保留出错命令之前的命令,大多数情况都是删除AOF文件末尾不完整的命令。