Redis集群(Cluster)

≯℡__Kan透↙ 提交于 2019-12-02 09:22:45

Redis集群是可以在多个Redis节点之间进行数据共享的架构。Redis集群通过分区容错(Partiton)来提高可用性(Availability),即使集群中有一部分节点失效或者无法进行通信,集群也可以继续处理请求。

Redis集群模式数据共享

Redis集群有以下特点:

  • 将数据切分到多个Redis节点
  • 当集群中部分节点失效或者无法进行通信时,整个集群仍然可以处理请求。

Redis将数据分片,每个Redis集群中包含16384个哈希槽(hash slot),Redis中存储的每个key都属于这些哈希槽中的一个。
Redis集群中的每个Redis节点负责处理一部分哈希槽,通过这种将哈希槽分布到不同Redis节点的做法使得用户可以很容易的向集群中添加或者删除Redis节点。如向Redis集群中加入节点D,只需将节点A、B、C中的部分哈希槽移动到节点D即可。

Redis集群中的一致性问题

在谈Redis集群一致性问题前,先了解CAP定理。CAP定理指的是在一个分布式系统中,一致性(Consistency)、可用性(Availability)、分区容错性(Partition Tolerance)三者不可兼得,只能同时满足其中的两个
Redis集群作为一个分布式系统,也存在相应的问题,Redis对可用性和分区容错性有较好的支持。因此Redis集群模式下数据一致性存在一定的问题,Redis集群不保证强一致性。
在Redis集群中,主从节点之间的复制是异步执行的,即主节点对命令的复制工作发生在返回命令回复给客户端之后,如果每次处理命令请求都需要等待复制操作完成,那么主节点处理命令请求的速度将极大地降低——必须在性能和一致性之间做出权衡。这种情况下会存在数据一致性问题,即集群中部分节点短时间内获取不到最新的主节点新增的数据。

Redis集群架构

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!