redis集群模式是怎么实现的?

1.redis的三种集群方式

1.主从模式

2.redis哨兵(Sentinel)模式

3.Cluster模式

2.redis的具体实现方式

1.主从模式
① 在主从模式中,数据库分为两类:主数据库master和从数据库slave,其中有且仅有一个主节点,从节点可以有多个

   只要网络正常,主节点会一直将自己的数据更新同步到从节点,保持主从同步
   当从节点启动后,主动向主节点发送sync命令,主节点接收到sync命令后再后台保存快照(rdb持久化)和缓存保存快照这段时间的命令,然后将保存的快照文件和缓存的命令发送给从节点.从节点接收到快照文件和命令后加载快照文件和缓存的执行命令.复制初始化后,主节点每次接收的写命令都会同步发送给主节点,保证主从数据一致性.
② 特点
(1) 主节点可读可写
(2) 从节点只读
③ 基本实现
   当从库和主库建立MS关系后,会向主数据库发送sync命令
   主库接收到sync命令后会开始在后台保存(RDB持久化过程),并将期间接受的写命令缓存起来
   当快照完成后,主redis会将快照文件和所有缓存的写命令发送给redis,从redis接收到后会载入   快照文件并且执行收到的缓存的命令之后,主redis每当接受到写命令时就会将命令发送从Redis,从而保持数据的一致性

2.哨兵模式

   主从模式的弊端就是不具备高可用性,当主节点挂掉后,redis将不能在对外提供写入操作,因此Sentinel应运而生
redis的sentinel系统用于管理多个redis服务器,主要执行以下三个任务:
① 监控 :Sentinel会不断的检查你的主服务器和从服务器是否运作正常
(1) Sentinel可以监控任意多个主节点和该主节点下的从节点
(2) 同一个哨兵下的,不同主从模型,彼此之间相互独立
(3) Sentinel会不断检查主节点和从节点是否正常工作
② 提醒 : 当被监控的某个redis服务器出现问题,Sentinel可以通过API向管理员或者其他应用程序发送通知
③ 自动故障迁移: 当一个主服务器不能正常工作时,Sentinel会开始一次自动故障迁移操作,它会进行组装选举,将其中一个从服务器升级为新的主服务器,并让失效的主服务器的其他服务器改为复制新的主服务器;当客户端视图连接失效的主服务器时,集群也会想客户端返回新主服务器的地址,使得集群可以使用新主服务器代替失效服务器.
3.redis集群模式
由于Redis主从复制架构每个数据库都要保存整个集群中的所有数据,容易形成木桶效应,为了最大化利用内存,可以采用集群,就是分布式存储,即每台redis存储不同的内容
Cluster环境搭建:修改redis.conf
修改pidfile指向路径 pidfile /opt/redis/6379/redis_6379.pid
开启允许集群 cluster-enabled yes
修改集群配置文件指向路径 cluster-config-file nodes-6379.conf
分别启动redis服务,查看redis状态,发现虽然已经是以集群方式启动了,但是redis之间关系还没确定下来
安装ruby环境: yum -y install zlib ruby rubygems
安装集群工具: gem install redis
执行命令: redis-trib.rb create --replicas 1 主ip:主端口 主ip:主端口 主ip:主端口 从ip:从端口 从ip:从端口 从ip:从端口
新增集群节点:
先启动需要增加的节点服务
执行以下命令,将这个新节点添加到集群中:redis-trib.rb add-node 主ip:主端口
增加了新的节点之后,这个新的节点可以成为主节点或者是从节点
变成从节点:redis-cli -c -p 7006 cluster replicate 某个主节点ID
变成主节点:redis-trib.rb reshard ip:端口,然后分配哈希槽
删除集群节点:
将这个节点上的所有插槽转移到其他节点上,执行命令:redis-trib.rb reshard 主ip:主端口
然后系统提示我们输入要接收这些哈希槽的节点的ID,这里选择一个或多个主节点ID

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值