特点
- 每个节点知道彼此之间的关系,也会知道自己的角色,当然他们也会知道自己存在与一个集群环境中,他们彼此之间可以交互和通信,比如ping pong。那么这些关系都会保存到某个配置文件中,每个节点都有,这个在搭建的时候会做配置的;
- 客户端要和集群建立连接的话,只需要和其中一个建立关系就行;
- 某个节点挂了,也是通过超过半数的节点来进行的检测,客观下线后主从切换,这个和哨兵模式相同;
- Redis中存在很多的插槽,又可以称之为槽节点,用于存储数据;
集群容错
- 构建Redis集群,一般需要至少3个节点作为master,以此组成一个高可用的集群,此外每个master都需要配备一个slave,所以整个集群需要6个节点,这也是最经典的Redis集群,也可以称之为三主三从,容错性更佳;
集群配置
- redis.conf 配置
# 开启集群模式
cluster-enabled yes
# 每一个节点需要有一个配置文件,需要6份;
# 每个节点处于集群的角色都需要告知其他所有节点,彼此知道;
# 这个文件用于存储集群模式下的集群状态等信息;
# 这个文件是由redis自己维护,我们不用管;
# 如果你要重新创建集群,那么把这个文件删了就行
cluster-config-file nodes-201.conf
# 超时时间,超时则认为master宕机,随后主备切换
cluster-node-timeout 5000
# 开启AOF
appendonly yes
- 创建集群
# 先启动所有Redis节点
# 创建集群,1-3为主,4-6为从,1和4,2和5,3和6分别对应为主从关系
# 这也是最经典用的最多的集群模式
# 主节点和从节点比例为1(最后一个1)
redis-cli -a {yourpassword} --cluster create ip1:port1 ip2:port2 ip3:port3 ip4:port4 ip5:port5 ip6:port6 --cluster-replicas 1
# 检查集群信息
redis-cli -a {yourpassword} --cluster check ip:prot
# 连接到集群(-c代表连接到集群)
redis-cli -c -a {password} -h {ip} -p {port}
# 查看集群信息
cluster info
槽节点(slots)
- 什么是槽节点(slots)
- 在Redis集群中,所有的数据都是存储在slots中,客户端读取数据也是从slots中读取,slots一共有16384个;
- 槽节点(slots)分配
- slots个数会均匀的分配给Redis集群中的每一个Master节点,Slave节点不会分配;
- 槽节点(slots)存储Redis数据的规则
- hash(key)%16384