Redis集群设计原理

本文介绍了Redis作为内存数据库的特性及其实现方式,包括其支持的数据类型、数据持久化策略、集群设计原理等内容。重点讲解了节点主从同步、哈希Slot分配机制以及主从+Hash模式如何提升Redis集群的稳定性和扩展性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Redis实际上就是个key-value的存储系统,和Memcached比较类似。它支持的数据类型相对较多,例如:string,list,set,zset(有序集合)和hash类型。并且这些数据类型都支持push/pop,add/remove等原子性操作。
与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。

Redis集群设计包括:

  • 哈希slot
  • 节点主从

一、节点主从

节点主从原理图:
这里写图片描述

1.除了每个master可以有多个slave,slave也可以有自己的slave,这点有利于redis的扩容。与zookeeper的选举机制大不相同。
2.读写分离。master负责写和同步数据,slave负责读取数据,可以减轻数据库压力。
3.slave将从master获取到的数据先压入磁盘,再写进内存。client直接从内存中读取信息,所以redis是内存数据库。

Master的写能力是redis存储能力的瓶颈

二、Hash

这里写图片描述

Object保存到Redis之前需要确定保存到哪个节点上。将CRC16(key)mod 16384的得到的数值所在的slot段,就对应哪个节点。
slot平均分配给nodes。一旦有节点加入或者退出,slot段进行迁移。例如node1挂掉了,它的slot段会被其他节点瓜分,其他节点原本的slot段还是保持不懂,这种机制有效降低迁移成本。
node之间也会互相监听。

三、主从+Hash

这里写图片描述
这样一来redis的集群不用手master容量的限制,可以随时扩容。而且,任何一个master或者slave挂掉,都不会发生灾难性故障,系统的稳定性增强了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值