redis 复制的原理与优化
1. 什么是主从复制
主从复制是在一个交换节点设立一高精度的基准时钟,通过传输链路把此基准时钟信号送到网中各个从节点,各个从节点利用锁相环技术把本地时钟频率锁定在基准时钟频率上,从而实现网内各节点之间的时钟信号同步 。
简单点来说就是通过网络传输链路将主数据库的数据发送到某一台服务器上。建立一个和主数据库完全一样的数据库环境,称之为从数据库。后续如果主数据库的数据发生变化会及时的通知到从服务器上(从数据库会与主数据库建立连接)。
redis中单机存在的问题:机器故障、容量瓶颈、QPS瓶颈——则采用RDB和AOF解决
redis中复杂环境中的高可用问题解决是采用复制的方案——哨兵和集群
主从复制的作用:
- 数据副本
- 扩展读性能
总结:
一个master可以有多个slave
一个slave只能有一个master
数据流向是单向的,master到slave
2. 复制的配置和流程
复制实际划分为主节点(master
)和从节点(slave
)。每个从节点只能有一个主节点,而主节点可以同时具有多个从节点。复制的数据流是单向的,只能由主节点复制到从节点。另外的话开启主从复制完全是在从节点发起的,不需要我们在主节点做任何事情。
三种配置复制方式:
-
slaveof命令启动——异步命令
redis-server`启动命令后添加参数 `--slaveof
slaveof no one 取消复制
【从节点断开复制后,不会删除已有的数据,只是不再接受主节点新的数据变化。主要流程第一断开与主节点复制关系,第二从节点晋升为主节点。】
-
配置文件
slaveof ip port
slave-read-only yes
主从复制流程:
-
保存配置;2. 建立连接;3. 发送ping命令;4. 权限校验;5. 数据同步;6. 持续监听