redis 主从复制 及 集群

主从复制

从 redis 5.0.0 开始 salveof 命令 由 replicaof 命令替换

如果在配置文件中 配置了 replicaof,如下:

replicaof 192.168.172.20 6379

则该redis 实例为从副本,且主从副本固定了。

也可以不写在配置文件中,直接在客户端使用命令。使用命令主从可以灵活转换

# 在客户端使用命令,手动设置
replicaof 192.168.172.20 6379

# 解除从副本设置
replicaof no one 

# 查看本实例的副本相关信息
info replication

哨兵模式

sentinel哨兵是特殊的redis服务,不提供读写服务,主要用来监控redis实例节点。

sentinel模式是建立在主从模式的基础上,如果只有一个Redis节点,sentinel就没有任何意义
当master挂了以后,sentinel会在slave中选择一个做为master,并修改它们的配置文件,其他slave的配置文件也会被修改,比如slaveof属性会指向新的master
当master重新启动后,它将不再是master而是做为slave接收新的master的同步数据

当使用sentinel模式的时候,客户端就不要直接连接Redis,而是连接sentinel的ip和port,由sentinel来提供具体的可提供服务的Redis实现,这样当master节点挂掉以后,sentinel就会感知并将新的master节点提供给使用者。

集群

sentinel模式基本可以满足一般生产的需求,具备高可用性。但是当数据量过大到一台服务器存放不下的情况时,主从模式或sentinel模式就不能满足需求了,这个时候需要对存储的数据进行分片,将数据存储到多个Redis实例中。
cluster模式的出现就是为了解决单机Redis容量有限的问题,将Redis的数据根据一定的规则分配到多台机器。
cluster可以说是sentinel和主从模式的结合体,通过cluster可以实现主从和master重选功能,所以如果配置两个副本三个分片的话,就需要六个Redis实例。因为Redis的数据是根据一定规则分配到cluster的不同机器的,当数据量过大时,可以新增机器进行扩容

redis cluster集群是去中心化的,每个节点都是平等的,连接哪个节点都可以获取和设置数据。平等指的是master节点,因为slave节点根本不提供服务,只是作为对应master节点的一个备份

*redis集群不支持多键值操作,如set 的 交集、并集。
*不支持多数据库,只有数据库0,不支持select命令



Redis 的主从、哨兵架构:https://www.cnblogs.com/yufeng218/p/13443058.html

Redis集群详解(主从模式,Sentinel模式,Cluster模式): https://blog.csdn.net/miss1181248983/article/details/90056960

redis 集群 :https://www.cnblogs.com/lixinjie/p/a-key-point-of-redis-in-interview.html

redis 主从同步方式是 异步的,当主节点收到写命令后并执行完成,立即返回客户端,并不等待从节点同步结束,没有所谓的半数机制(每次写操作要半数以上的节点都同步了数据,才算写成功,zookeeper 集群)。
异步同步 优点是 快, 可用性高,缺点就是当数据在同步前,主节点宕机,导致数据丢失。从分布式 CAP 角度看,满足 AP。
而有半数机制的 组件集群(zookeeper)则是 数据一致性高,数据丢失的可能性更低, 从分布式 CAP 角度看,满足 CP。

http://www.redis.cn/topics/replication.html
http://www.redis.cn/topics/sentinel.html

http://www.redis.cn/topics/cluster-tutorial.html
http://www.redis.cn/topics/cluster-spec.html

posted @ 2021-05-31 18:27  zhanglw  阅读(104)  评论(0)    收藏  举报