Redis 集群原理解析

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: Redis 集群原理解析

概述

Redis集群是redis提供的分布式数据库方案,集群通过分片来进行数据共享,并提供复制和故障转移功能

一 节点

一个Redis集群由多个节点组成,最初他们都是相互独立的,他们都处于一个只包含自己的集群当中,但是要形成一个真正可用的集群,就必须将各个节点联系起来,构成一个包含多个节点的集群

连接各个节点通过 CLUSTER MEET 命令

连接成功后就可以将对方节点拉到自己所在的集群中,连接页可以称之为握手。节点的状态在redis中是通过clusterNode对象进行保存的

二 槽指派

Redis集群通过分片的方式来保存数据库中的键值对:集群中的整个数据库被分为16384个槽,数据库中的每个键都属于16384个槽中的其中一个,集群中的每个节点都可以处理0个或者最多16384个槽

当数据库中的16384个槽都有节点在处理时,集群处于上线状态,否则处于下线状态

通过 CLUSTER ADDSLOTS 命令,可以进行节点的槽指派

槽指排信息会记录在clusterNode对象的slots和numslot属性上。

当设置已经存在的数据,如 set msg "hello world"时,集群会先计算出msg属于哪个槽,然后判断槽属于哪一个节点,如果当前节点不是槽所在的节点,那么会返回moved错误,指引节点转向正在负责这个槽的节点进行数据的处理

三 重新分片

Redis的重新分片可以将任意数量已经指派给某个节点的槽改为指派给另一个节点,并且相关节点的键值对也移动到另一个节点

重新分片可以在线上进行,集群不用下线,并且源节点和目标节点都可以继续执行命令请求

四 ASK错误

当迁移过程中可能会发生错误,访问源节点时数据其实已经迁移到了目标节点,这时候会发出ask错误,并将请求指向目标节点

五 复制和故障转移

集群中的节点分为主节点和从节点,其中主节点复杂处理槽,从节点用于复制某个主节点,例如 7000,7001,7002为3个主节点,将7004,7005设置到集群里,添加为从节点。

集群各个节点会互相发送ping命令,来互相发现对方是不是存于下线状态,clusterNode中的flags记录了节点的状态,分为三个在线状态,疑似下线状态,下线状态,当半数以上负责处理槽的主节点报告某一主节点为疑似下线状态,那么这个主节点就会被标记为已下线。

六 选取新的主节点

当一个主节点下线了,那么剩下的主节点会进行投票给从节点,从从节点中选择一个新的主节点,当一个从节点获取到的票数大于N/2+1时,这个从节点就会晋升为主节点。这里要说一下,部署4个主节点和部署5个主节点在投票时其实是一样的,因为他们都是需要3张选票才能推选谁是主节点。

相关文章
|
1月前
|
存储 缓存 NoSQL
Redis常见面试题全解析
Redis面试高频考点全解析:从过期删除、内存淘汰策略,到缓存雪崩、击穿、穿透及BigKey问题,深入原理与实战解决方案,助你轻松应对技术挑战,提升系统性能与稳定性。(238字)
|
存储 缓存 NoSQL
Redis 服务器全方位介绍:从入门到核心原理
Redis是一款高性能内存键值数据库,支持字符串、哈希、列表等多种数据结构,广泛用于缓存、会话存储、排行榜及消息队列。其单线程事件循环架构保障高并发与低延迟,结合RDB和AOF持久化机制兼顾性能与数据安全。通过主从复制、哨兵及集群模式实现高可用与横向扩展,适用于现代应用的多样化场景。合理配置与优化可显著提升系统性能与稳定性。
206 0
|
3月前
|
存储 负载均衡 NoSQL
【赵渝强老师】Redis Cluster分布式集群
Redis Cluster是Redis的分布式存储解决方案,通过哈希槽(slot)实现数据分片,支持水平扩展,具备高可用性和负载均衡能力,适用于大规模数据场景。
285 2
|
1月前
|
NoSQL 算法 Redis
【Docker】(3)学习Docker中 镜像与容器数据卷、映射关系!手把手带你安装 MySql主从同步 和 Redis三主三从集群!并且进行主从切换与扩容操作,还有分析 哈希分区 等知识点!
Union文件系统(UnionFS)是一种**分层、轻量级并且高性能的文件系统**,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem) Union 文件系统是 Docker 镜像的基础。 镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。
278 5
|
2月前
|
存储 监控 NoSQL
Redis高可用架构全解析:从主从复制到集群方案
Redis高可用确保服务持续稳定,避免单点故障导致数据丢失或业务中断。通过主从复制实现数据冗余,哨兵模式支持自动故障转移,Cluster集群则提供分布式数据分片与水平扩展,三者层层递进,保障读写分离、容灾切换与大规模数据存储,构建高性能、高可靠的Redis架构体系。
|
2月前
|
存储 缓存 NoSQL
Redis持久化深度解析:数据安全与性能的平衡艺术
Redis持久化解决内存数据易失问题,提供RDB快照与AOF日志两种机制。RDB恢复快、性能高,但可能丢数据;AOF安全性高,最多丢1秒数据,支持多种写回策略,适合不同场景。Redis 4.0+支持混合持久化,兼顾速度与安全。根据业务需求选择合适方案,实现数据可靠与性能平衡。(238字)
|
7月前
|
存储 NoSQL 数据库
Redis 逻辑数据库与集群模式详解
Redis 是高性能内存键值数据库,广泛用于缓存与实时数据处理。本文深入解析 Redis 逻辑数据库与集群模式:逻辑数据库提供16个独立存储空间,适合小规模隔离;集群模式通过分布式架构支持高并发和大数据量,但仅支持 database 0。文章对比两者特性,讲解配置与实践注意事项,并探讨持久化及性能优化策略,助你根据需求选择最佳方案。
249 5
|
2月前
|
存储 缓存 监控
Redis分区的核心原理与应用实践
Redis分区通过将数据分散存储于多个节点,提升系统处理高并发与大规模数据的能力。本文详解分区原理、策略及应用实践,涵盖哈希、范围、一致性哈希等分片方式,分析其适用场景与性能优势,并探讨电商秒杀、物联网等典型用例,为构建高性能、可扩展的Redis集群提供参考。
147 0
|
3月前
|
存储 缓存 人工智能
Redis六大常见命令详解:从set/get到过期策略的全方位解析
本文将通过结构化学习路径,帮助读者实现从命令语法掌握到工程化实践落地的能力跃迁,系统性提升 Redis 技术栈的应用水平。
|
5月前
|
缓存 监控 NoSQL
Redis 实操要点:Java 最新技术栈的实战解析
本文介绍了基于Spring Boot 3、Redis 7和Lettuce客户端的Redis高级应用实践。内容包括:1)现代Java项目集成Redis的配置方法;2)使用Redisson实现分布式可重入锁与公平锁;3)缓存模式解决方案,包括布隆过滤器防穿透和随机过期时间防雪崩;4)Redis数据结构的高级应用,如HyperLogLog统计UV和GeoHash处理地理位置。文章提供了详细的代码示例,涵盖Redis在分布式系统中的核心应用场景,特别适合需要处理高并发、分布式锁等问题的开发场景。
372 41

推荐镜像

更多
  • DNS