复制原理: 从库发出slaveof 127.0.0.1 6389命令的一刻,在从库实例启动的一刻(slaveof参数预先已配置好) 利用tcp/ip协议与127.0.0.1 6389连接;告知自己的端口号;发送sync命令。此时主库会做一次RDB持久化,并将保存期间的用户命令缓存起来,快照完成后,会将rdb文件与缓存命令,以及后续按时间生成的写都发给从库;从库接收到后,将内容写到硬盘的临时文件上。写入完成后从库会用该临时文件替换RDB快照文件,再载入内存,并且接收缓存命令与后续的写。 注意: 1.每次断开后,上述步骤都得从走一次。同步过程中,从库不会堵塞,而是可以处理客户端的命令,从库会用同步前的数据对客户进行响应。可以配置slave-serve-stale-data参数为No来使从库在同步完成前,对所有命令(除了INFO与SLAVEOF)都回复“sync with master in progress"。 2.复制的过程中,快照无论在主库还是从库都起到很大作用。只要执行复制就会进行快照,即使我们关闭了主库的RDB方式的持久化(通过删除所有save参数),更进一步,无论是否启用了RDB方式的持久化,REDIS在启动的时候都会尝试读取dir和dbfilename两个参数指定的RDB文件来恢复数据库。
redis复制应用场景 读写分离: 常见的场景中,读的频率大于写,当主机无法应付大量的读请求时(尤其是耗资源的如sort排序命令),可以建立多个从库,主库写,多个从库读的方式。