6、Redis 高可用部署的两种方式 Redis Cluster 集群模式、Redis Sentinel 哨兵模式

redis7部署集群 但是,redis集群是没有绝对数据安全的,只能说相比于主从和哨兵模式,Cluster集群模式大大提高了数据的安全性,减少了数据丢失的可能性,但并不代表绝对不会丢失数据,在某些特定情况,也是会存在数据不统一和丢失数据的情况,只是说这种几率很小。3.如果主节点挂掉,哨兵会在从节点中自动选择一个作为主节点,如果之前的主节点恢复,之前的主节点会变成新的从节点,哨兵并不会恢复之前的主节点。此命令会根据ip地址的排序决定谁是主节点,谁是从节点,默认前面是主节点,后面是从节点,前面三个是主节点,后面三个是从节点。 阅读详情

Redis 的高可用部署是构建稳定、高性能系统的基石。在实际开发中,Redis Cluster(集群模式) 和 Sentinel(哨兵模式) 是两种主流的高可用方案,它们解决的问题相似,但架构、能力、适用场景有显著区别。

下面我将为你提供一份 详细、实战级的对比说明文档,涵盖原理、架构、优缺点、性能、数据分布、故障转移机制,并结合 Java 开发者的实际需求给出 选型建议和推荐做法。


📚 Redis 高可用方案对比:Redis Cluster vs Sentinel 模式

适用读者:Java 后端开发者、系统架构师、运维工程师
目标:理解两种模式的本质区别,掌握在实际项目中如何选择与部署


一、核心目标对比

目标Redis SentinelRedis Cluster
✅ 高可用(HA)✅ 支持主从切换✅ 支持节点故障转移
✅ 数据冗余✅ 主从复制✅ 分片 + 副本
✅ 自动故障转移✅ 支持✅ 支持
✅ 水平扩展(分片)❌ 不支持(需客户端分片)✅ 原生支持
✅ 客户端直连✅ 可直连主节点✅ 客户端需支持 Cluster 协议

二、基本架构与工作原理

1. Redis Sentinel(哨兵模式)

✅ 架构图(简化)
                +----------------+
                |   Sentinel     |
                | (监控/决策)    |
                +-------+--------+
                        |
         +--------------+--------------+
         |              |              |
+--------v----+ +-----v------+ +-----v------+
|  Master     | |  Slave     | |  Slave     |
|  (写/读)    | |  (只读)    | |  (只读)    |
+-------------+ +------------+ +------------+
🔧 工作机制:
  • Sentinel 进程:独立运行的监控进程(通常部署 3~5 个)
  • 监控:持续检查 Master 和 Slave 是否存活
  • 自动故障转移(Failover):
    • 当 Master 宕机,Sentinel 选举新主(从 Slave 中选)
    • 通知其他 Slave 切换主节点
    • 通知客户端新的 Master 地址(通过 PUB/SUB 或 API 查询)
  • 配置中心:客户端需连接 Sentinel 获取当前 Master 地址

⚠️ 注意:数据不分片,所有数据仍在单个 Master 上。


2. Redis Cluster(集群模式)

✅ 架构图(6 节点示例)
        Client
          │
          ▼
   +------------------+
   | Redis Cluster    |
   | (16384 slots)    |
   +------------------+
     /       |       \
    ▼        ▼        ▼
Master1  Master2  Master3
   │        │        │
   ▼        ▼        ▼
Slave1   Slave2   Slave3
🔧 工作机制:
  • 数据分片(Sharding):整个 Key 空间划分为 16384 个哈希槽(hash slots)
  • Key → Slot 映射:CRC16(key) % 16384
  • Slot → 节点分配:每个 Master 节点负责一部分 Slot(如 0-5000, 5001-10000 等)
  • 故障转移:每个 Master 至少有一个 Slave,故障时自动提升 Slave 为新 Master
  • Gossip 协议:节点间通过 Gossip 交换状态信息
  • 客户端职责:
    • 首次获取集群拓扑(CLUSTER SLOTS)
    • 缓存 Slot → 节点映射
    • 请求转发或重定向(MOVED / ASK)

✅ 支持 自动分片 + 高可用 + 水平扩展


三、核心区别对比表

对比维度Redis SentinelRedis Cluster
高可用性✅ 支持主从切换✅ 支持多节点故障转移
数据分片❌ 不支持(单 Master)✅ 支持 16384 个 slots
水平扩展❌ 无法扩展单 Master 容量✅ 可动态增减节点
吞吐量受限于单 Master 性能多 Master 并行,更高 QPS
内存上限单机内存限制(如 64GB)多节点总和(如 3×64GB)
客户端要求需支持 Sentinel(如 Jedis, Lettuce)需支持 Cluster 协议(Lettuce 推荐)
运维复杂度简单较复杂(需管理多个节点、槽位)
网络开销小(仅 Sentinel 通信)较大(Gossip 协议)
数据一致性异步复制,可能丢数据同 Sentinel,异步复制
多 Key 操作限制支持多 Key 操作(同一 Master)❌ 跨 Slot 的 multi-key 操作受限(如 MGET 必须同 Slot)
适用场景小中规模、数据量 < 50GB大规模、高并发、海量数据

四、实际开发中的选择建议

✅ 场景 1:中小型项目(数据量 < 50GB,QPS < 5万)

推荐:Sentinel 模式

理由:
  • 架构简单,运维成本低
  • 支持完整的 multi-key 操作(如 MGET, MSET, ZUNIONSTORE)
  • 客户端兼容性好(几乎所有 Redis 客户端都支持)
  • 故障转移稳定,适合大多数业务系统
典型应用:
  • 用户会话缓存
  • 商品信息缓存
  • 配置中心
  • 分布式锁(Redisson)

✅ 场景 2:大型项目(数据量 > 50GB,QPS > 10万,需水平扩展)

推荐:Redis Cluster

理由:
  • 支持水平扩展,可承载 TB 级数据
  • 多 Master 并行处理,提升整体吞吐量
  • 原生支持分布式架构,适合微服务环境
  • 避免单点瓶颈
典型应用:
  • 社交平台(粉丝关系、动态流)
  • 游戏排行榜(ZSet 分布式存储)
  • 实时推荐系统
  • 大规模消息队列(Stream)

五、Java 客户端支持情况

客户端Sentinel 支持Cluster 支持推荐指数
Lettuce✅✅⭐⭐⭐⭐⭐(推荐)
Jedis✅✅⭐⭐⭐⭐☆(较老,但稳定)
Redisson✅✅⭐⭐⭐⭐⭐(高级功能多)

示例:Lettuce 连接 Cluster

RedisClusterConfiguration clusterConfig = new RedisClusterConfiguration(Arrays.asList(
    "192.168.1.100:7000",
    "192.168.1.100:7001",
    "192.168.1.101:7000"
));

LettriceClientConfiguration clientConfig = LettuceClientConfiguration.builder()
    .commandTimeout(Duration.ofSeconds(5))
    .build();

RedisConnectionFactory factory = new LettuceConnectionFactory(clusterConfig, clientConfig);
factory.afterPropertiesSet();

六、推荐部署架构(生产环境)

✅ 推荐:Redis Cluster(3主3从)

Node1: 192.168.1.100:7000 (Master) → Node4: 7003 (Slave)
Node2: 192.168.1.101:7001 (Master) → Node5: 7004 (Slave)
Node3: 192.168.1.102:7002 (Master) → Node6: 7005 (Slave)
  • 每个节点独立配置 redis.conf
  • 使用 redis-cli --cluster create 初始化集群
  • 建议使用 奇数个 Master(3/5/7)避免脑裂

✅ 备选:Sentinel(1主2从 + 3哨兵)

Master:  192.168.1.100:6379
Slave1:  192.168.1.101:6379
Slave2:  192.168.1.102:6379

Sentinel1: 192.168.1.100:26379
Sentinel2: 192.168.1.101:26379
Sentinel3: 192.168.1.102:26379
  • 哨兵配置:
    sentinel monitor mymaster 192.168.1.100 6379 2
    sentinel auth-pass mymaster yourpassword
    sentinel down-after-milliseconds mymaster 5000
    sentinel failover-timeout mymaster 10000
    

七、实际开发中的最佳实践

实践推荐做法
📦 数据分片设计Cluster 中避免 KEYS *,合理设计 key 名称(如 user:{userId}:profile)使同用户数据在同一 slot
🔁 客户端重试处理 MOVED / ASK 重定向,Lettuce 自动处理
🧯 故障转移测试定期模拟主节点宕机,验证自动切换
📊 监控使用 INFO 命令 + Prometheus + Grafana 监控命中率、延迟、内存
🔐 安全启用密码(requirepass),禁用危险命令(rename-command FLUSHDB "")
💾 持久化Cluster 和 Sentinel 都建议开启 AOF + RDB
🔄 备份定期备份 RDB 文件,防止数据丢失

八、总结:如何选择?

选择依据推荐方案
数据量小(< 50GB),QPS 低✅ Sentinel(简单稳定)
需要水平扩展,数据量大✅ Redis Cluster
要求支持 multi-key 操作✅ Sentinel(Cluster 有限制)
微服务架构,多团队共用✅ Cluster(资源隔离)
团队运维能力弱✅ Sentinel
追求极致性能与扩展性✅ Cluster

九、最终推荐(2025 年 Java 开发者建议)

✅ 如果你是新项目,且预计数据量会增长 → 直接上 Redis Cluster
✅ 如果你是中小型项目,追求稳定简单 → 使用 Sentinel + 主从复制
✅ 无论哪种,都使用 Lettuce 或 Redisson 作为客户端
✅ 生产环境至少 3 节点,避免单点故障

Redis高可用方案--sentinel(哨兵模式)和集群 redis高可用方案--sentinel(哨兵模式)和集群一. redis高可用方案--sentinel(哨兵模式)哨兵模式简介:sentinel工作过程:关于sentinel的三个定时任务:sentinel网络:sentinel网络故障修复原理:哨兵模式配置二. redis高可用方案--集群redis集群设计:redis集群节点分配和数据分配节点分配redis集群的主从模式redis集群搭建: 一. redis高可用方案–sentinel(哨兵模式) 当我们搭建好redis主从复制方案后会发现一个问题,那 阅读详情

相关推荐

【Redis从入门到精通】第52篇:sentinel vs cluster——redis高可用方案怎么选

本文对比了Redis三种高可用部署方案:单机模式、哨兵模式和集群模式。通过架构图和对比表格详细展示了各方案的优缺点: 单机模式:简单但无高可用,适合测试环境 哨兵模式:主从复制+哨兵监控,适合中小规模(10-30GB)业务 集群模式:数据分片+自动故障转移,适合大规模(TB级)高并发场景 文章给出了具体应用场景建议:中小规模且团队运维能力有限选哨兵,需要水平扩展和大规模高并发选集群,并附有各模式的典型配置示例。最后提供了决策树帮助企业根据数据量、QPS和运维能力做出选择。

xyghehehehe的专栏 524

redis集群-主从同步、哨兵模式、Cluster 集群

集群的三种模式: 一、主从同步/复制 redis有俩种复制模式:Rdb和aof redis持久化问题;会有数据损失吗,开启aof的持久化吗; redis提供2种持久化方案。rdb和aof redis有自己默认的持久化方案 (Rdb 方案) Rdb(默认):在指定的时间间隔内将内存中的数据集快照写入磁盘,实际操作过程是fork一个子进程,先将数据集写入临时文件,写入成功后,再替换之...

m0_37235955的博客 8634

基于RK3562J开发板的MCP2518FD CAN-FD控制器驱动适配与测试指南

本文详细介绍了在RK3562J开发板上适配MCP2518FD CAN-FD控制器驱动的完整流程。内容涵盖内核驱动配置、设备树修改、编译烧录以及实际通信测试,重点分享了调试方法,旨在帮助开发者快速为嵌入式系统扩展高速CAN-FD通信能力,适用于汽车电子、工业控制等场景。

jenkins8butler的博客 495

Redis之哨兵与集群

Redis集群是一个提供在多个Redis间节点间共享数据的程序集Redis集群并不支持处理多个keys的命令,因为这需要在不同节点间移动数据,从而达不到像Redis那样的性能,在高负载的情况下可能会导致不可预料的错误Redis集群通过分区来提供一定程度的可用性,在实际环境中当某个节点宕机或者不可达的情况下可继续处理命令2. Redis集群的优点。

Guo_youyou的博客 3172

UE5.5使用ControlRig实现MetaHumanNPC看向玩家

本文介绍了在虚幻引擎中实现NPC自然看向玩家的技术方案。通过MetaHuman的ControlRig系统,采用面部动画曲线+全身动画Montage的表演方式,结合ControlRig驱动CTRL_lookat控制器实现视线追踪。

平常心 1302

AB脉冲详解(编码器,PLC,上位机)

编码器线有些是用不到的。Z脉冲:360度中,只有1度是输出,输出能力是。编码器实际就是发光二极管,所以电流超过20ma会缩短寿命或损坏。

cfqq1989的博客 1万+

Redis 集群模式与哨兵模式:详细对比与实例解析

Redis 是一个高性能的键值数据库,它支持多种部署模式以满足不同的可用性和一致性需求。在众多部署方式中,集群(Cluster)模式和哨兵(Sentinel)模式是两种最常见的高可用解决方案。本文将详细介绍这两种模式的工作原理、区别,并通过实例来加深理解。

fudaihb的博客 7304

AutoCAD矢量数据导出全攻略:GIS4CAD插件一键转shp/mdb/kml(附安装包)

本文详细介绍了GIS4CAD插件如何高效解决AutoCAD矢量数据向GIS格式转换的难题。通过一键操作,用户可将CAD中的规划图、地形图等无损转换为行业标准的shp、mdb、kml等多种格式,并确保属性完整与坐标准确。文章提供了从插件安装、数据准备到实战导出的全流程指南,是城市规划、测绘等领域专业人士提升数据互操作效率的必备攻略。

a2b3c4d5e的博客 282

Redis | Redis单机、主从复制、哨兵与集群模式多维度详细对比

Redis 提供了多种部署模式,每种模式都有其独特的技术原理和适用场景。单机模式适合开发测试,主从复制模式适合读扩展,哨兵模式适合高可用性,而集群模式适合大规模生产环境。选择合适的部署模式需要根据具体的应用需求、数据量和性能要求来决定。

Andya_net的博客 1480

【Spreadsheet】香港规范结构设计电子表格库开发方案

深入理解香港本地规范特点和要求结合国际先进标准(Eurocode) 的技术内容考虑香港地理环境特殊性 (台风、地质等)建立完善的质量控制体系保持持续更新维护的能力。

hmywillstronger的博客 1361

DEV-C++调试设置

       昨天用C/C++去考了CSP,结果用DEV-C++调试总是闪退,按照我的记忆打开了调试参数,迷迷糊糊搞了一通,还是没办法调试,难受了几个小时。所以今天痛下决心,一定要写下DEV-C++设置调试的过程,警示自己! 解决步骤 1.打开DevC++找到上方工具栏 2.点击选择编译选项,再按下图所示设置即可

懒羊羊的快乐小屋 1028

Redis的哨兵模式和集群模式有何区别?

哨兵模式主要用于保证 Redis 的高可用性,适用于不需要数据分片的小规模部署场景。集群模式则提供了高可用性和数据分片的能力,适合需要水平扩展的大规模应用。选择哪种模式取决于你的具体需求,包括数据规模、读写性能要求以及你对系统复杂度的接受程度。如果你的应用数据量不大,且只需要简单的主从复制和故障转移,那么哨兵模式可能是更好的选择。如果你需要处理大量数据并且希望能够在多个节点间均匀分布负载,那么集群模式是更合适的选择。

qq_33240556的博客 1423

在windows系统上使用codex出现应用程序无法正常启动(0xc0000022)的解决方案

本文主要介绍了在windows系统上使用codex出现应用程序无法正常启动(0xc0000022)的解决方案,希望能对使用codex的同学们有所帮助。 文章目录 1. 问题描述 2. 原因分析 3. 解决方案

weixin_43178406的博客 10万+

【Redis】三种集群模式(主从复制、哨兵模式、Cluster)

redis有三种集群模式,其中主从是最常见的模式。Sentinel 哨兵模式是为了弥补主从复制集群中主机宕机后,主备切换的复杂性而演变出来的。哨兵顾名思义,就是用来监控的,主要作用就是监控主从集群,自动切换主备,完成集群故障转移。cluster 模式是redis官方提供的集群模式,使用了Sharding 技术,不仅实现了高可用、读写分离、也实现了真正的分布式存储。

weixin_40381772的博客 5699

记录:解决Ubuntu20.04安装ros报错E: Unable to locate package ros-kinetic-desktop-full【亲测有效】

报错:E: Unable to locate package ros-kinetic-desktop-full.尝试好久一直都无法下载,最后得知真相的我眼泪哗哗的直流。

**My Coding Family** 6万+

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Redis Sentinel 与 Redis Cluster

一、前言 互联网高速发展的今天,对应用系统的抗压能力要求越来越高,传统的应用层+数据库已经不能满足当前的需要。所以一大批内存式数据库和Nosql数据库应运而生,其中redis,memcache,mongodb,hbase等被广泛的使用来提高系统的吞吐性,所以如何正确使用cache是作为开发的一项基技能。本文主要介绍Redis Sentinel 及 Redis Cluster的区别及用法,Redi...

只有想不到没有做不到,程序的力量。。。 7万+

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

Redis高可用之Sentinel哨兵模式

Redis关于高可用与分布式有三个与之相关的运维部署模式。分别是主从复制master-slave模式、哨兵Sentinel模式以及集群Cluster模式。这三者都有各自的优缺点以及所应对的场景,以及对应的业务使用量,我们该怎么选择...

分享不一样的技术,与你一起共同成长! 1918

Devexpress16.2.6破解工具

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

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

Redis哨兵与集群模式

Redis哨兵与集群模式深度解析:高可用与分布式架构对比 Redis单机存在单点故障和扩展性问题,官方提供两种解决方案: 哨兵模式 专注于高可用,通过Sentinel进程监控主从节点 自动故障转移:主节点宕机时选举新主并通知客户端 Python通过redis-py连接哨兵集群,自动处理主从切换 集群模式 实现数据分片(16384个哈希槽)与高可用 每个节点负责部分槽位,支持自动重定向 使用Gossip协议实现节点通信与故障转移 Python通过RedisCluster客户端自动处理槽位重定向 选型建议: 需

闲人编程的博客 1684

redis集群的三种部署方式——主从复制、哨兵机制、cluster集群

Redis是常用的非关系型数据库,具有以下特点:1.核心特点高性能:Redis基于内存操作,读写速度极快,特别适用于对性能要求高的实时应用。数据持久化:支持RDB和AOF两种持久化方式,确保即使在服务器重启后也能恢复数据。分布式特性:通过主从复制、哨兵模式或cluster集群模式,Redis可以轻松地构建高可用和可扩展的服务。丰富的数据结构:提供了多种数据结构支持,便于开发人员根据实际需求进行数据建模和处理。

2301_80440447的博客 6325

Redis集群方案:主从、哨兵和Cluster(Redis Cluster Solution: Master-slave, Sentinel, and Cluster)

Redis集群方案‌包括三种模式:‌主从模式(Master-Slave Replication)‌、‌哨兵模式(Sentinel Mode)‌和‌集群模式(Cluster Mode)‌。 主从模式(Master-Slave Replication) 主从模式是一种数据复制机制,通过将主节点的数据复制到从节点上,实现数据的冗余备份和读取性能的提升。主节点负责处理所有的写操作,从节点负责处理读操作。当主节点进行写操作时,它会将命令日志发送给从节点,从节点接收命令并执行,从而保持与主节点的一致性。

Linux运维老纪的博客 1905

Redis分布式模式深度解析:哨兵模式与集群模式全对比

fill:#333;important;important;fill:none;color:#333;color:#333;important;fill:none;fill:#333;height:1em;分布式解决方案哨兵模式解决单点故障集群模式解决性能瓶颈单机Redis的瓶颈单点故障服务不可用内存有限无法存储海量数据CPU有限无法承载高并发fill:#333;important;important;fill:none;color:#333;color:#333;important。

✨ 欢迎来到【Seal ^_^ 的优快云博客】!✨ 1641

Redis Sentinel 和Redis Cluster对比

1、Redis Sentinel Redis-Sentinel(哨兵模式)是Redis官方推荐的高可用性(HA)解决方案,当用Redis做Master-slave的高可用方案时,假如master宕机了,Redis本身(包括它的很多客户端)都没有实现自动进行主备切换,而Redis-sentinel本身也是一个独立运行的进程,它能监控多个master-slave集群,发现master宕机后能进行自...

johnhuster的专栏 9997

Redis 单机模式,主从模式,哨兵模式(sentinel),集群模式(cluster)优缺点分析

Redis 单机模式,主从模式,哨兵模式(sentinel),集群模式(cluster),第三方模式优缺点分析 Redis 的几种常见使用方式包括: 单机模式 主从模式 哨兵模式(sentinel) 集群模式(cluster) 第三方模式 单机模式 Redis 单副本,采用单个 Redis 节点部署架构,没有备用节点实时同步数据,不提供数据持久化和备份策略,适用于数据可靠性要求不高的纯缓存业务场景。 优点: 架构简单,部署方便。 高性价比:缓存使用时无需备用节点(单实例可用性可以用 su

dns007 2921

redis 主从复制,哨兵模式 sentinel, 集群模式Redis Cluster

本文配置文件部分,进行了引用 https://www.cnblogs.com/zxtceq/p/7676911.html https://blog.youkuaiyun.com/u010648555/article/details/79430105 https://www.cnblogs.com/yuanermen/p/5717885.html 一个pc运行多个redis 只需复制一份配置文件...

Calvin's Blog 1288

关于Redis集群、主从、哨兵模式的介绍

Redis集群模式详解 本文系统介绍了Redis的四种集群模式及其配置方案。1)主从复制模式通过主节点处理写请求、从节点同步数据和分担读负载;2)Redis集群模式采用16384个哈希槽实现数据分片,支持水平扩展;3)哨兵模式专注于监控和自动故障转移;4)集群+哨兵组合模式兼具数据分片和高可用性。文章重点分析了3主3从的最小高可用配置方案,阐述了奇数master节点的选举机制优势,并通过餐馆经营类比形象说明了集群工作原理。最后对比了不同模式的优缺点,为业务场景选择提供了参考依据,特别强调了写入负载和冗余需求

weixin_50055999的博客 1843

Redis 不同集群模式:主从复制和分片集群 Sentinel vs Cluster 全面对比

Redis Sentinel和Cluster是Redis两种不同的高可用方案。Sentinel主打高可用性,采用主从复制架构,配置简单但容量受限;Cluster则兼具高可用和水平扩展能力,通过分片存储突破单机限制,但复杂度较高。选择依据主要是数据规模:中等数据量选Sentinel,超单机容量需选Cluster。同时需考虑运维成本和客户端兼容性,前者适合快速部署,后者满足高性能需求但实施门槛更高。

qq_46371374的博客 1098
上一篇: 8、Spring Boot 集成 Redis Sentinel 和 Redis Cluster 的完整示例
下一篇: 什么是数据库的分库、分表、分片?他们都有什么作用?
龙茶清欢
博客等级 码龄7年 3720粉丝 375原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

龙茶清欢

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值