集群
辅助链接Redis 设计与实现:集群方案 | 郭宁的个人博客 Redis高可用篇:Cluster集群能支持的数据量有多大?-汗血宝马
Redis的集群是Redis提供的分布式数据库方案,集群通过分片(sharding)来进行数据共享,并提供复制和故障转移功能。使用 Redis Cluster 集群,主要解决了大数据量存储导致的各种慢问题,同时也便于横向拓展。
-
节点
一个Redis集群通常由多个节点组成,通常每个节点是相互独立的,每个节点都是一个集群而当我们将独立的节点连接起来的时候,就构成了一个包含多个节点的集群。
要想启动集群模式,首先要设置集群模式:
cluster-enabled yes
, 之后再启动 Redis 节点。每个节点会继续使用单机模式中所使用的所有服务器组件:
- 节点会继续使用文件事件处理器来处理命令请求和返回命令回复。
- 节点会继续使用时间事件处理器来执行 serverCron 函数, 而 serverCron 函数又会调用集群模式特有的 clusterCron 函数:clusterCron 函数负责执行在集群模式下需要执行的常规操作, 比如向集群中的其他节点发送 Gossip 消息, 检查节点是否断线; 又或者检查是否需要对下线节点进行自动故障转移, 等等。
- 节点会继续使用数据库来保存键值对数据,键值对依然会是各种不同类型的对象。
- 节点会继续使用 RDB 持久化模块和 AOF 持久化模块来执行持久化工作。
- 节点会继续使用发布与订阅模块来执行 PUBLISH 、 SUBSCRIBE 等命令。
- 节点会继续使用复制模块来进行节点的复制工作。
- 节点会继续使用 Lua 脚本环境来执行客户端输入的 Lua 脚本。
此外,节点会继续使用redisServer结构来保存服务器的状态,使用redisClient结构来保存客户端的状态,而那些只在集群中使用到的数据被保存在**
clusterNode
** 结构,**clusterLink
结构, 以及clusterState
**结构里面。clusterNode
: