Redis底层原理 (Redis集群架构演进)知识准备(七)

Redis集群模式全解析:从主从复制到Cluster的架构演进与实践指南 在分布式系统架构中,数据缓存是提升应用性能的关键技术。其核心原理是通过内存存储高频访问数据,减少对后端数据库的访问压力,从而显著降低响应延迟。这一技术价值在于能够支撑高并发场景,保障系统的高可用性与可扩展性。随着业务规模增长,单点缓存服务会面临数据容量与并发性能的双重瓶颈。为此,Redis提供了主从复制、哨兵和Cluster三种集群化方案,分别解决数据冗余、自动故障转移和数据分片等核心问题。其中,哨兵模式通过监控与选举机制实现高可用,而Cluster模式则采用哈希槽分片机制支撑海量数据存储与高并发写入。这些 阅读详情

Replication+Sentinel

这套架构使用的是社区版本推出的原生高可用解决方案,其架构图如下!

这里Sentinel的作用有三个:

  • 监控:Sentinel 会不断的检查主服务器和从服务器是否正常运行。

  • 通知:当被监控的某个Redis服务器出现问题,Sentinel通过API脚本向管理员或者其他的应用程序发送通知。

  • 自动故障转移:当主节点不能正常工作时,Sentinel会开始一次自动的故障转移操作,它会将与失效主节点是主从关系的其中一个从节点升级为新的主节点,并且将其他的从节点指向新的主节点。

工作原理就是,当Master宕机的时候,Sentinel会选举出新的Master,并根据Sentinel中client-reconfig-script脚本配置的内容,去动态修改VIP(虚拟IP),将VIP(虚拟IP)指向新的Master。我们的客户端就连向指定的VIP即可!
故障发生后的转移情况,可以理解为下图

缺陷:
(1)主从切换的过程中会丢数据
(2)Redis只能单点写,不能水平扩容

Proxy+Replication+Sentinel

这里的Proxy目前有两种选择:Codis和Twemproxy。我经历这套架构的时间为2015年,当时我好像咨询过我的主管为啥不用Codis和Redis官网的Redis Cluster。原因有二:

  • 据说是因为Codis开源的比较晚,考虑到更换组件的成本问题。毕竟本来运行好好的东西,你再去换组件,风险是很大的。

  • Redis Cluster在2015年还是试用版,不保证会遇到什么问题,因此不敢尝试。

所以我没接触过Codis,之前一直用的是Twemproxy作为Proxy。
这里以Twemproxy为例说明,如下图所示

工作原理如下

  • 前端使用Twemproxy+KeepAlived做代理,将其后端的多台Redis实例分片进行统一管理与分配

  • 每一个分片节点的Slave都是Master的副本且只读

  • Sentinel持续不断的监控每个分片节点的Master,当Master出现故障且不可用状态时,Sentinel会通知/启动自动故障转移等动作

  • Sentinel 可以在发生故障转移动作后触发相应脚本(通过 client-reconfig-script 参数配置 ),脚本获取到最新的Master来修改Twemproxy配置

缺陷:
(1)部署结构超级复杂
(2)可扩展性差,进行扩缩容需要手动干预
(3)运维不方便

Redis Cluster

我经历这套架构的时间为2017年,在这个时间Redis Cluster已经很成熟了!你们在网上能查到的大部分缺点,在我接触到的时候基本已经解决!
比如没有完善的运维工具?可以参照一下搜狐出的CacheCloud。
比如没有公司在生产用过?我接触到的时候,百度贴吧,美团等大厂都用过了。
比如没有Release版?我接触到的时候距离Redis Cluster发布Release版已经很久。
而且毕竟是官网出的,肯定会一直维护、更新下去,未来必定会更加成熟、稳定。换句话说,Redis不倒,Redis Cluster就不会放弃维护。所以,我推荐还是这套架构!
如下图所示

工作原理如下

  • 客户端与Redis节点直连,不需要中间Proxy层,直接连接任意一个Master节点

  • 根据公式HASH_SLOT=CRC16(key) mod 16384,计算出映射到哪个分片上,然后Redis会去相应的节点进行操作

具有如下优点:
(1)无需Sentinel哨兵监控,如果Master挂了,Redis Cluster内部自动将Slave切换Master
(2)可以进行水平扩容
(3)支持自动化迁移,当出现某个Slave宕机了,那么就只有Master了,这时候的高可用性就无法很好的保证了,万一Master也宕机了,咋办呢? 针对这种情况,如果说其他Master有多余的Slave ,集群自动把多余的Slave迁移到没有Slave的Master 中。

缺点:
(1)批量操作是个坑
(2)资源隔离性较差,容易出现相互影响的情况。

烟哥彩蛋

在面试中如果碰到下列问题,如何应用上本篇的知识呢?先明确一点,我推荐的是Redis Cluster。
OK,开始举例说明

问题1:懂Redis事务么?
正常版:Redis事务是一些列redis命令的集合,blabla…
高调版: 我们在生产上采用的是Redis Cluster集群架构,不同的key是有可能分配在不同的Redis节点上的,在这种情况下Redis的事务机制是不生效的。其次,Redis事务不支持回滚操作,简直是鸡肋!所以基本不用!

问题2:Redis的多数据库机制,了解多少?
正常版:Redis支持多个数据库,并且每个数据库的数据是隔离的不能共享,单机下的redis可以支持16个数据库(db0 ~ db15)
高调版: 在Redis Cluster集群架构下只有一个数据库空间,即db0。因此,我们没有使用Redis的多数据库功能!

问题3:Redis集群机制中,你觉得有什么不足的地方吗?
正常版: 不知道
高调版: 假设我有一个key,对应的value是Hash类型的。如果Hash对象非常大,是不支持映射到不同节点的!只能映射到集群中的一个节点上!还有就是做批量操作比较麻烦!

问题4:懂Redis的批量操作么?
正常版: 懂一点。比如mset、mget操作等,blabla
高调版: 我们在生产上采用的是Redis Cluster集群架构,不同的key会划分到不同的slot中,因此直接使用mset或者mget等操作是行不通的。

问题5:那在Redis集群模式下,如何进行批量操作?
正常版:不知道
高调版:这个问题其实可以写一篇文章了,改天写。这里说一种有一个很简单的答法,足够面试用。即:
如果执行的key数量比较少,就不用mget了,就用串行get操作。如果真的需要执行的key很多,就使用Hashtag保证这些key映射到同一台Redis节点上。简单来说语法如下

对于key为{foo}.student1、{foo}.student2,{foo}student3,这类key一定是在同一个redis节点上。因为key中“{}”之间的字符串就是当前key的hash tags, 只有key中{ }中的部分才被用来做hash,因此计算出来的redis节点一定是同一个!

ps:如果你用的是Proxy分片集群架构,例如Codis这种,会将mget/mset的多个key拆分成多个命令发往不同得Redis实例,这里不多说。我推荐答的还是Redis Cluster。

问题6:你们有对Redis做读写分离么?
正常版:没有做,至于原因额。。。额。。。额。。没办法了,硬着头皮扯~
高调版:不做读写分离。我们用的是Redis Cluster的架构,是属于分片集群的架构。而Redis本身在内存上操作,不会涉及IO吞吐,即使读写分离也不会提升太多性能,Redis在生产上的主要问题是考虑容量,单机最多10-20G,key太多降低Redis性能.因此采用分片集群结构,已经能保证了我们的性能。其次,用上了读写分离后,还要考虑主从一致性,主从延迟等问题,徒增业务复杂度。

 

Java面试八股文高效准备:从原理链路到Offer实战 在Java后端面试中,ConcurrentHashMap的size()实现、Kafka的百万并发支撑、MySQL的B+树索引等高频考点,本质上考察的是候选人能否将知识点串联成完整的技术链路。理解并发容器、消息队列、索引优化等核心概念,掌握其底层原理与技术价值,是将面试追问转化为加分项的关键。针对分布式系统、JVM、Redis等企业级应用场景,系统化梳理知识网络,并借助模拟追问与限时输出训练结构化表达,能显著提升面试通过率。本文结合真实面试复盘,分享一套从背题到答题、从概念到应用的八股文准备方法论,帮助开发者 阅读详情

相关推荐

后端面试实战指南:从知识体系构建到AI辅助的系统化准备策略

在软件工程领域,构建扎实的知识体系和解决复杂问题的能力是工程师的核心竞争力。其原理在于将离散的技术点通过场景化思维进行深度关联与整合,形成可应对实际挑战的系统化认知网络。这一过程的技术价值在于能显著提升工程师的设计思维、排查能力和技术前瞻性,使其从被动的知识接收者转变为主动的问题解决者。在应用场景上,尤其在应对高并发系统设计、性能优化、分布式一致性等后端开发核心议题时,这种体系化能力至关重要。本文聚焦于如何高效准备后端面试,通过定义“最小可行知识体系”(MVKS)、将八股文知识点进行场景化升维、并系统化拆解

weixin_30315723的博客 307

redis-集群理论篇

当客户端向一个错误的节点发出了指令,该节点会发现指令的key所在的槽位并不归自己管理,这时它会向客户端发送一个特殊的跳转指令携带目标操作的节点地址,告诉客户端去连这个节点去获取数据。客户端收到指令后除了跳转到正确的节点上去操作,还会同步更新纠正本地的槽位映射表缓存,后续所有key将使用新的槽位映射表。

weixin_42128977的博客 775

Redis实战详解:从入门到高可用架构设计

监控,>1.5 表示碎片严重使用--bigkeys扫描大 Key调整和hz避免过期集中爆发开启自动整理内存(Redis 4.0+)INFO 各模块监控指标要熟记于心,集成 Prometheus + Grafana 实现可视化告警。Redis 的强大,不在于它有多复杂,而在于它用极简的设计解决了最棘手的问题。单线程?反而成就了原子性;异步复制?换来极致性能;不支持事务回滚?那就用 Lua 弥补。它教会我们的,是。

weixin_32306683的博客 1033

关于redis集群下,mset命令异常

以上是执行mset的异常信息。

risc123456的博客 329

Win10或Win8下ObjectARX2015 Wizard向导创建项目失败解决方法

[原创]objectARX 2015 Wizard安装向导在Win8/win10下无法创建项目的解决方法总结 by edata @2017-5-1 objectARX 2015 Wizard安装向导在Win8/win10下无法创建项目的解决方法 因为Win8/Win10对系统盘(默认c:)使用了高级权限管理,所以在此盘下操作文件的修改工作都需要管理员权限才行。 基于这个原因,导致非管理员安

edata的博客 7028

RFSOC实战解析:MTS多片同步的时序校准与相位相干实现

本文深入解析了在RFSOC平台上实现MTS多片同步的关键技术与实战流程。文章从相位相干的重要性出发,详细阐述了SYSREF与SYNC信号的协同工作机制,并提供了从硬件时钟配置到软件API调用的完整MTS实现步骤。重点探讨了时序校准的核心方法,旨在帮助工程师解决多通道系统相位不一致的难题,确保ADC与DAC达到精确的相位相干,从而构建高性能的MIMO和相控阵系统。

weixin_29206669的博客 192

那些年用过的Redis集群架构(含面试解析)

引言今天是2019年2月6号,也就是大年初二,我接到了高中同学刘有码面试失利的消息。他面试的时候,身份是某知名公司的小码农一枚,却因为不懂自己生产上Redis是如何部署的...

孤独烟 377

MATLAB 设置legend加标题

x1 = linspace(0,5); y1 = sin(x1/2); plot(x1,y1) hold on x2 = [0 1 2 3 4 5]; y2 = [0.2 0.3 0.6 1 0.7 0.6]; scatter(x2,y2,'filled') hold off legend({'sin(x/2)','2016'},'Location','northwest','Orientation','horizontal')%水平 legend添加标题 lgd = legend; lgd.Fon

早起CaiCai的学习空间 4713

redis集群 mget mset

redis相关学习资料:golang context 并发编程实战考题——实现带有过期功能的单机锁Redis集群中的MGET和MSET操作 Redis是一个高性能的键值存储系统,广泛用于缓存、消息队列、排行榜等场景。在Redis中,MGET和MSET是两个非常实用的命令,它们分别用于获取和设置多个键的值。本文将详细介绍R...

weixin_41237048的博客 476

生成式引擎优化(GEO)全景指南:技术架构、实施策略与未来趋势

生成式引擎优化(GEO)全景指南摘要 GEO(生成式引擎优化)是针对AI生成内容(如ChatGPT、文心一言等)的优化策略,通过结构化数据、权威建设与语义优化提升企业内容在AI答案中的引用优先级,实现“无点击曝光”。其核心价值在于从流量竞争转向信任构建,突破传统SEO局限。技术架构依托RAG(检索增强生成)、向量数据库及反馈学习机制,动态优化内容生成与引用逻辑。实施策略包括:部署结构化数据(如JSON-LD)、维护动态知识图谱、适配多模态内容(3D/VR)、联合权威机构发布白皮书。行业案例显示,美妆、智能家

解锁AI流量新红利!🚀 GEO优化(生成引擎优化)助您掌控AI搜索,让AI成为您的品牌最佳代言人! 1451

CarPlay盒子选购避坑指南:为什么你的车机破解了却用不了?从USB设备ID说起

本文深入解析CarPlay盒子硬件兼容性问题,从USB设备ID匹配到车机适配逻辑,揭示破解成功却无法使用的根本原因。通过分析USB设备识别的核心要素和逆向工程usb_device_manager.xml文件,提供三种主流解决方案对比,并强调操作中的硬件保护机制,帮助车主避免常见陷阱。

weixin_30706691的博客 472

Redis从入门到精通(二十一)Redis最佳实践(二)mset、pipeline、慢查询优化、内存划分

批处理优化:命令执行流程、mset、Pipeline、集群下的批处理 服务器端优化:持久化配置、慢查询优化、命令及安全配置、内存划分和内存配置、集群or主从

挑灯日记 记录自己 1608

[ vulhub漏洞复现篇 ] Drupal XSS漏洞 (CVE-2019-6341)

[ vulhub漏洞复现篇 ] Drupal XSS漏洞 (CVE-2019-6341) Drupal是使用PHP语言编写的开源内容管理框架(CMF),它由内容管理系统(CMS)和PHP开发框架(Framework)共同构成,在GPL2.0及更新协议下发布。Drupal在某些情况下,通过文件模块或者子系统上传恶意文件触发XSS漏洞。

qq_51577576的博客 2208

Redis Cluster (Redis 集群模式)从入门到精通:架构解析、机制详解与运维排查

Redis Cluster是Redis官方提供的分布式解决方案,通过哈希槽分片实现水平扩展,结合主从复制和自动故障转移保障高可用。核心架构包含3个主节点和3个从节点,采用无中心化设计,节点间通过Gossip协议通信。关键机制包括哈希槽分片(16384个槽位)、主从复制、故障自动转移(基于投票机制)等。集群通过CRC16算法计算键的槽位,客户端根据MOVED指令重定向请求。这种设计支持动态扩缩容,仅需迁移对应槽位数据,不影响整体服务。

2201_75355172的博客 1630

【数据集】全球预报系统GFS概述:数据下载及处理

【数据集】全球预报系统GFS概述:数据下载及处理

WW、forever的博客 5750

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

从单机到集群:MQTT 百万级连接的架构演进与实战指南

摘要:本文深入探讨MQTT集群技术,为应对物联网设备连接爆炸式增长(预计2025年达750亿台)提供解决方案。文章首先分析单机MQTT服务器的局限性,继而详述MQTT集群的三种主流架构(共享存储、集群互联、混合架构)及其优缺点。通过EMQX5.3.0实战案例,展示三节点集群搭建过程,包括负载均衡配置(Nginx)和Java测试程序验证。重点解析集群核心机制:消息路由原理、会话共享及脑裂处理,并提供百万级连接优化方案(JVM参数、持久化配置等)。

果酱 の 博客 1434

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Redis面试题宝典:核心原理+高并发实战+集群优化(2025持续更新版)

Redis作为当今最流行的内存数据库之一,已成为后端开发工程师必须掌握的核心技术。本文将全面剖析Redis的核心知识点,涵盖数据结构、持久化机制、集群架构、性能优化等高频面试内容,并结合2025年最新技术趋势进行深度解读。无论你是准备面试还是技术提升,本文都将成为你Redis学习路上的得力助手。

用文字记录技术,用分享回馈社区,用坚持见证成长 6986

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Redis面试不靠背题:穿透、分布式锁、集群的底层逻辑

在分布式系统设计中,缓存与并发控制是绕不开的高频技术主题。Redis作为高性能内存存储组件,常被用于解决缓存穿透、热点数据失效、多实例互斥等工程问题。理解这些问题的本质,不仅需要掌握命令和方案名称,更要清楚底层原理与适用边界。例如,缓存穿透的解决思路在于拦截无效请求,而分布式锁的核心则在于异常场景下的安全性与一致性权衡。同时,集群模式下的数据分片、主从复制和故障转移机制,决定了系统的可用性与扩展能力。从现象到原理,从方案到取舍,只有建立完整的知识框架,才能在实际业务中做出合理判断。本文围绕这些主线,梳理Re

weixin_32050773的博客 259

Redis核心原理与高并发实战:从底层数据结构到分布式锁与集群架构

Redis作为基于内存的键值存储系统,凭借微秒级读写和单线程IO多路复用模型,成为高并发架构中数据库前关键的加速层。理解其底层数据结构(如SDS、跳表)与RedisObject编码设计,是掌握高性能读写的基础。同时,持久化机制(RDB/AOF/混合)保障了数据安全,而缓存穿透、击穿、雪崩的解决方案与分布式锁的正确实现,直接决定线上系统的稳定性。从主从复制、哨兵到Cluster集群的演进,则提供了应对海量流量与高可用的架构思路。本文以工程落地视角系统梳理Redis核心技术,帮助后端开发者从会用走向懂原理,更好

weixin_31292729的博客 255

Redis进阶实战:从底层原理到高并发架构与面试

在分布式系统设计中,缓存层往往是决定高并发性能的核心环节。而Redis作为最流行的内存数据库,其底层数据结构设计(如SDS、跳表、压缩列表)直接影响存储效率与访问速度。理解这些原理不仅有助于优化缓存策略,还能精准应对缓存穿透、击穿与雪崩等经典问题。同时,分布式锁、持久化机制以及Cluster集群架构也是工程实践中的高频技术点。本文完整梳理了从源码阅读到企业级架构落地的学习路径,结合面试高频考点,帮助你构建从底层原理到高并发场景的体系化认知,真正掌握Redis的“为什么快”与“怎么用对”。

weixin_31188927的博客 231

Redis入门(四)之集群的搭建

1.写在前面 前面的博客,我们介绍缓存的三大问题中的缓存的穿透的问题,今天的原本打算介绍缓存击穿和缓存雪崩的问题,但是这儿我们需要一些前置的知识,就是集群的知识,于是我今天打算先介绍下Redis的集群的一些知识。 2.Redis集群的演变的过程 每一种技术出现都有它的历史的原因,学习一门的技术,我们不能只能简简单单的了解技术如何使用,以及技术的底层的原理,我们还要适当的了解下这样的技术的演变的过程。 2.1单机版 核心技术:数据持久化 持久化是最简单的高可用方法(有时甚至不被归为高可用的手段),主要作用是数

了不起的盖茨比的博客 411

Redis 高可用架构全解:主从复制 + 哨兵 + Cluster 集群(面试必问)

Redis高可用架构演进与核心原理解析 摘要:本文系统梳理了Redis高可用架构的演进路线,从基础的主从复制到哨兵模式,再到Cluster集群,层层递进解决单点故障、性能瓶颈和容量限制问题。重点剖析了三大架构的核心原理:主从复制的全量/增量同步机制、哨兵模式的故障转移流程、Cluster集群的哈希槽分片策略。针对线上实践,提供了主从延迟优化、哨兵脑裂预防、Cluster数据均衡等实用解决方案,并解答了16384哈希槽设计、MOVED/ASK重定向等高频面试问题。

2401_88151415的博客 449

Redis 知识体系(文档型 NoSQL)

本文深入解析Redis八大基础数据结构及其底层编码实现,涵盖String、List、Set、ZSet、Hash、Geo、Bitmap、HyperLogLog和Stream等核心结构。通过源码级分析,揭示了SDS、Ziplist、Dict等底层组件的设计原理,并详细探讨了Redis的高性能IO模型、持久化机制(RDB/AOF/混合模式)、内存管理策略及高可用架构(主从/哨兵/Cluster)。 重点剖析了Redis在工程实践中的典型问题与优化方案,包括缓存穿透/击穿/雪崩的解决方案、分布式锁的完整实现(含Re

专注 Java 后端开发,分享基础语法、JVM、并发、Spring 全家桶、微服务、分布式、性能优化等实战干货。坚持输出高质量技术笔记,用简单语言讲清复杂原理,助力每一位 Java 开发者稳步进阶。 794

TongWeb集群与高可用的区别:为什么你的集群还不够‘高可用’?

本文深入解析了TongWeb集群与高可用的核心区别,指出仅部署多实例集群不等于实现高可用。文章剖析了负载均衡器单点、会话状态不一致等关键风险,并提供了从基础集群演进到全栈高可用架构的清晰路径与解决方案,帮助构建真正健壮的业务系统。

k5l6m的博客 666

Redis面试核心:分布式锁、缓存与集群实战解析

在分布式系统设计中,数据一致性与高并发访问是核心挑战。Redis作为基于内存的键值存储系统,凭借其丰富的数据结构和原子操作,成为解决这些问题的关键组件。其价值不仅在于高速读写,更在于为缓存、分布式锁、排行榜等场景提供统一的技术方案。理解其底层原理,如SDS、跳表和IO多路复用,是掌握性能优势的基础。从工程实践角度,缓存穿透、击穿、雪崩的应对策略,以及分布式锁从SETNX到Redisson看门狗的演进,都体现了Redis在保障系统稳定性和数据一致性中的重要作用。无论是业务系统的高效响应,还是集群环境下的故障转

weixin_33226548的博客 324
上一篇: Redis底层原理 (持久化以及集群)集群工作原理(六)
下一篇: Redis底层原理 (Redis实现分布式锁)(八)
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值