一、高可用
“高可用性”(High Availability)通常来描述一个系统经过专门的设计,从而减少停工时间,而保持其服务的高度可用性。CAP的A AP模型单机Redis是无法保证高可用性的,当Redis服务器宕机后,即使在有持久化的机制下也无法保证不丢失数据。所以我们采用Redis多机和集群的方式来保证Redis的高可用性。单进程+单线程 + 多机(集群)
二、主从复制
Redis支持主从复制功能,可以通过执行slaveof(Redis5以后改成replicaof)或者在配置文件中设置slaveof(Redis5以后改成replicaof)来开启复制功能。
1、一主一从
2、一主多从
3、传递复制
三、主从配置
主Redis配置:无需特殊配置
从Redis配置:修改从服务器上的redis.conf文件:
#slaveof<masterip><masterport>
#表示当前【从服务器】对应的【主服务器】的IP是192.168.10.135,端口是6379。replicaof127.0.0.16379
四、作用
1、读写分离
一主多从,主从同步
主负责写,从负责读
提升Redis的性能和吞吐量主从的数据一致性问题
2、数据容灾
从机是主机的备份
主机宕机,从机可读不可写
默认情况下主机宕机后,从机不可为主机利用哨兵可以实现主从切换,做到高可用
五、原理与实现
复制流程
保存主节点信息
当客户端向从服务器发送slaveof(replicaof) 主机地址(127.0.0.1)端口(6379)时:从服务器将主机ip(127.0.0.1)和端口(6379)保存到redisServer的masterhost和masterport中。
从服务器将向发送SLAVEOF命令的客户端返回OK,表示复制指令已经被接收,而实际上复制工作是在OK返回之后进行。
建立socket连接
slaver与master建立socket连接
slaver关联文件事件处理器
该处理器接收RDB文件(全量复制)、接收Master传播来的写命令(增量复制)
发送ping命令
Slaver向Master发送ping命令
1、检测socket的读写状态
2、检测Master能否正常处理
Master的响应:
1、发送“pong” , 说明正常
2、返回错误,说明Master不正常3、timeout,说明网络超时
权限验证
主从正常连接后,进行权限验证
主未设置密码(requirepass=“”),从也不用设置密码(masterauth=“”)
主设置密码(requirepass!=“”),从需要设置密码(masterauth=主的requirepass的值)或者从通过auth命令向主发送密码