✅ 一、什么是 Redis 集群(Redis Cluster)

Redis 集群是 Redis 官方在 3.0 版本引入的分布式部署方案,它的目标是解决以下几个问题:

  • 单个 Redis 实例容量有限(最多只能使用一个服务器的内存)

  • 单点故障(单个 Redis 服务挂掉就无法使用)

  • 扩展性不足(性能受限于单机)

🔧 Redis Cluster 的三大核心机制:

机制说明
数据分片使用 16384 个哈希槽(hash slots),所有数据根据 key 的哈希值分布到不同节点中
主从复制每个主节点可配置多个从节点,做数据备份,提高可用性
自动故障转移主节点挂了,自动把从节点升级为主节点,无需人工干预

✅ 二、Redis 集群的部署方式(手把手教学)

我们以部署 6 个 Redis 实例(3 主 3 从)为例来讲解:


📁 1. 准备 Redis 安装文件

你可以先下载并解压 Redis:

wget http://download.redis.io/releases/redis-6.2.6.tar.gz
tar -zxvf redis-6.2.6.tar.gz
cd redis-6.2.6
make

📂 2. 创建多个 Redis 实例目录

我们创建 6 个目录,每个实例用不同端口:

mkdir -p ~/redis-cluster/7000
mkdir -p ~/redis-cluster/7001
mkdir -p ~/redis-cluster/7002
mkdir -p ~/redis-cluster/7003
mkdir -p ~/redis-cluster/7004
mkdir -p ~/redis-cluster/7005

🧾 3. 配置 redis.conf 文件

7000 为例配置一个 redis.conf(复制后修改端口即可):

port 7000
cluster-enabled yes
cluster-config-file nodes-7000.conf
cluster-node-timeout 5000
appendonly yes
dir /home/youruser/redis-cluster/7000
logfile "7000.log"
daemonize yes

每个实例都配置好自己的端口,节点配置文件名、日志名和工作目录。


▶ 4. 启动 Redis 实例

逐个启动这 6 个 Redis 服务:

redis-server ~/redis-cluster/7000/redis.conf
redis-server ~/redis-cluster/7001/redis.conf
...

你可以使用 ps -ef | grep redisnetstat -anp | grep 700 来确认服务是否正常启动。


🔗 5. 创建 Redis 集群

使用 redis-cli 创建集群,并设置主从结构(3主3从):

redis-cli --cluster create \
127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 \
127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 \
--cluster-replicas 1

含义是:

  • 把前 3 个端口(7000~7002)作为主节点

  • 后 3 个端口(7003~7005)作为各主节点的从节点

  • 16384 个槽会被均分

集群创建成功后会提示你是否确认,输入 yes 即可。


✅ 三、Redis 集群的运行机制

1. 数据是如何分片的?

  • Redis 把 key 的 CRC16 哈希值 对 16384 取模,确定它属于哪个槽(slot)。

  • 每个主节点管理一部分槽,例如:

    7000 管理 0 ~ 5460
    7001 管理 5461 ~ 10922
    7002 管理 10923 ~ 16383
    

2. 节点之间如何通信?

  • 所有节点通过 gossip 协议交换状态信息。

  • 每个节点都知道其他节点的位置和状态。

  • 使用两个端口:如 7000 端口用于数据交互,7000+10000=17000 端口用于集群节点间通信。

3. 自动故障转移

  • 如果主节点宕机,其从节点在其他节点投票多数通过后,会自动升级为主节点。

  • 故障恢复后重新加入集群。


✅ 四、Redis 集群的客户端接入

1. 普通 redis-cli 无法处理集群请求(因为 key 可能在不同节点)

必须使用带 --cluster 的命令,或者使用支持 Cluster 的客户端。

2. Java 客户端接入(Jedis 示例)

Set<HostAndPort> nodes = new HashSet<>();
nodes.add(new HostAndPort("127.0.0.1", 7000));
nodes.add(new HostAndPort("127.0.0.1", 7001));
nodes.add(new HostAndPort("127.0.0.1", 7002));JedisCluster cluster = new JedisCluster(nodes);
cluster.set("name", "redis-cluster");
String value = cluster.get("name");
System.out.println(value);

✅ 五、注意事项和限制

限制描述
不支持事务(MULTI/EXEC)跨 slot 操作
MGET/MSET 必须作用于同一 slot(可以用 {tag} 方式强制放入同一槽)
数据迁移时性能会波动
客户端必须支持 Redis Cluster 协议

✅ 六、总结(一句话回顾)

Redis Cluster 是一种去中心化的、基于数据分片和主从复制的高可用、高扩展性的 Redis 分布式解决方案。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/912145.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/912145.shtml
英文地址,请注明出处:http://en.pswp.cn/news/912145.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《中国电信运营商骨干网:历史、现状与未来演进》系列 第五篇:新玩家入局——中国广电CBNNET如何构建全国一张网?

专栏引言 在中国电信、联通、移动三足鼎立的骨干网格局中&#xff0c;一位身负特殊使命的“国家队新兵”正加速入场。它就是中国广电。根据2023年发布的《广电网络融合发展战略》&#xff0c;其核心任务是构建一张“新型广电网络”。手握700MHz“黄金频段”和5G牌照&#xff0c…

QT 国际化 翻译 总结

目录 生成TS文件 单纯Qt Creator工程 生成ts文件方式一&#xff1a;creator方式 生成ts文件方式二&#xff1a;命令行方式 vs2019QT工程 CMake工程 生成qm文件 代码 需要先根据ui产生ts文件&#xff0c;再根据ts文件产生qm文件&#xff0c;然后代码加载 生成TS文件 单…

Java 中实现 Excel 导入一些疑难杂症

在 Java 中实现 Excel 导入功能时&#xff0c;除了已讨论的字段映射、类型转换和内存管理外&#xff0c;还需注意以下关键问题&#xff0c;结合常见踩坑点和最佳实践总结如下&#xff1a; ⚙️ 一、文件与格式校验 文件类型与版本兼容性 明确区分 .xls&#xff08;HSSF&#x…

修改Docker-compose使Uptime-Kuma支持IPV6

之前部署了一个Uptime-Kuma用来监控服务的运行&#xff0c;最近&#xff0c;在监控IPV6网络的时候出现了一点问题&#xff0c;Docker不支持IPV6网络&#xff1a; 解决方案&#xff1a; 修改/etc/docker/daemon.json文件 {"experimental": true,"fixed-cidr-v6&…

分布式存储架构的优势

分布式存储架构通过将数据分散存储在多个物理节点上&#xff0c;在性能、可靠性及成本效益方面展现显著优势&#xff0c;具体核心优势如下&#xff1a; 一、‌弹性扩展能力‌ 水平无缝扩容‌ 通过添加节点即可线性扩展存储容量与性能&#xff0c;支持EB级数据规模&#xff0…

【4目全景】基于海思3403平台开发4目360°全景拼接相机方案

此文主要介绍基于海思3403平台通过实时视频采集&拼接&融合&显示实现实时全景空间漫游体验&#xff0c;该模组将4路视频拼接成一幅360全景图&#xff0c;涉及到计算机视觉、计算机图形学、数字视频处理等技术。 基本开发步骤主要包括以下几个方面&#xff1a;4路视频…

element-plus 按钮 展开/隐藏

文章目录 1、小记2、页面3、typescript事件4、测试数据5、样式 1、小记 element-plus中el-table 的 expand,箭头控制子项显示&#xff0c;有点丑。 想实现类似bootstrap &#xff0c;用按钮 展开/隐藏子项的功能 2、页面 <!-- 表内容 --><el-table:data"tabl…

SSE(Server-Sent Events)、WebSocket和Polling的对比

1. 基本概念 协议通信模式协议层数据流向连接方式SSE服务器单向推送基于HTTP/HTTPS服务器→客户端&#xff08;单向&#xff09;持久化TCP连接WebSocket全双工通信独立协议&#xff08;基于TCP&#xff09;服务器↔客户端&#xff08;双向&#xff09;持久化TCP连接&#xff0…

不同类型的微型导轨精度降低速度有何差异?

微型导轨是一种高精度、小体积、轻量化的直线运动导轨系统&#xff0c;广泛应用于各种需要精密直线运动的领域。其精度等级是衡量其性能的重要指标&#xff0c;不同精度等级的导轨适用于不同的应用场景。那么&#xff0c;不同类型的微型导轨精度降低速度有何差异&#xff1f; 滚…

debian挂载新硬盘后不识别怎么办?

在实际服务器部署或本地系统扩容的过程中&#xff0c;为 Debian 系统添加新硬盘是常见操作。无论是物理服务器、云服务器还是虚拟机环境中&#xff0c;当添加一块新硬盘之后&#xff0c;我们的期望很简单——系统应立即识别并支持挂载使用。 但理想归理想&#xff0c;现实却常…

nt!MiFlushSectionInternal函数分析从nt!IoSynchronousPageWrite函数到Ntfs!NtfsFsdWrite函数

第一部分&#xff1a; while (TRUE) { KeClearEvent (&IoEvent); Status IoSynchronousPageWrite (FilePointer, Mdl, (PLARGE_INTEGER)&StartingOffset…

开发Qt程序时,为什么是CMake?

开发Qt程序时&#xff0c;为什么是CMake&#xff1f; 什么是CMake&#xff1f; CMake 是一个跨平台的构建工具&#xff0c;用来管理 C/C 项目的编译过程。它通过读取 CMakeLists.txt 配置文件&#xff0c;自动生成适合不同操作系统和编译器的构建脚本&#xff08;比如 Makefi…

web布局10

Grid 布局指的是 CSS Grid Layout &#xff0c;它和以往 CSS 框架&#xff08;CSS Framework&#xff09;中所说的网格系统&#xff08;Grid System&#xff09;有所不同。至今为止&#xff0c;它是唯一一个具有二维能力的布局系统&#xff0c;即&#xff0c;它是一个基于二维网…

Spring AI 项目实战(十二):Spring Boot +AI + DeepSeek + 百度OCR 公司发票智能处理系统的技术实践(附完整源码)

系列文章 序号文章名称1Spring AI 项目实战(一):Spring AI 核心模块入门2Spring AI 项目实战(二):Spring Boot + AI + DeepSeek 深度实战(附完整源码)3Spring AI 项目实战(三):Spring Boot + AI + DeepSeek 打造智能客服系统(附完整源码)4

【FR801xH】Ubuntu24.04搭建富芮坤FR801xH系列开发环境教程

00. 目录 文章目录 00. 目录01. FR801xH概述02. FR801xH特性03. gcc-arm-none-eabi-10.3-2021.10概述04. gcc-arm-none-eabi-10.3-2021.10下载05. gcc-arm-none-eabi-10.3-2021.10安装06. FR801xH-SDK编译07. 附录 01. FR801xH概述 FR801xH 系列芯片是面向 SOC&#xff08;片上…

Excel学习05

员工排班表 通过之前的学习&#xff0c;目前的我们已经具备了Excel的初步制作能力。接下来将从实际出发制作一个员工排班表。在制作排版表之前&#xff0c;先来看我们要用到的函数。 DATE函数 date函数是Excel中处理日期的核心函数之一&#xff0c;它能够将单独的年、月、日…

黑马JVM解析笔记(五):深入理解Java字节码执行机制

1.从字节码的角度分析i /** * 从字节码角度分析 a 相关题目 */ public class Demo3_2 {public static void main(String[] args) {int a 10;int b a a a--;System.out.println(a);System.out.println(b);} }a 和 a 实际上代表了两个不同的操作&#xff0c;它们分别对应自增…

从社交媒体到金融“超级应用”,马斯克X平台将上线投资交易服务

报道称&#xff0c;马斯克旗下的X平台将推出“超级App”&#xff0c;提供投资和交易服务&#xff0c;另外&#xff0c;X也在探索引入信用卡或借记卡。作为金融服务布局的第一步&#xff0c;X平台已宣布将推出X Money——一项数字钱包和点对点支付服务&#xff0c;Visa将成为其首…

【入门第2课】Splunk数据接入

前言 Splunk支持多种多样的数据源,比如它可以直接上传文件,可以监控本地的任何目录或文件,也可以配置通用转发器等方式来完成数据接入。Splunk所有的设置都可以通过Web页面、使用Splunk CLI命令,甚至是直接修改配置文件,以此来完成设置。 那么,如何接入数据呢?我们通过…

【数据挖掘】关联规则算法学习—Apriori

关联规则算法学习—Apriori Apriori算法是关联规则挖掘中的经典算法&#xff0c;用于发现数据集中的频繁项集和强关联规则。其核心思想基于先验性质&#xff1a;若一个项集是频繁的&#xff0c;则其所有子集也一定是频繁的。该算法通过逐层搜索的迭代方法高效挖掘关联规则。 要…