当前位置: 首页 > article >正文

深入剖析 Redis 的三种集群方式以及实战配置

Redis作为高性能内存数据库其集群化部署是解决单节点性能瓶颈与实现高可用的关键。本篇将深入剖析三种主流的集群方式主从复制、哨兵模式Sentinel与官方集群Cluster并为您提供详细的搭建指南与配置示例。一、主从复制 (Master-Slave Replication)主从复制是最基础的集群模式通过一个主节点Master和一个或多个从节点Slave实现读写分离。主节点负责处理写操作从节点负责处理读操作并实时从主节点同步数据。1. 核心原理数据同步从节点启动后向主节点发送 SYNC 命令。主节点执行 bgsave 生成RDB快照并发送给从节点同时将快照期间的写命令记录到复制积压缓冲区。从节点加载RDB并执行缓冲区中的命令完成初始化同步。增量同步初始化后主节点每次执行的写命令都会同步发送给从节点实现增量同步。2. 搭建步骤与配置以下以单机伪集群为例在一台服务器上启动3个Redis实例1个主节点2个从节点。主节点配置 (redis-master.conf)# 端口 port 6379 # 后台运行 daemonize yes # PID文件 pidfile /var/run/redis_6379.pid # 日志文件 logfile /usr/local/redis-cluster/logs/redis_6379.log # 工作目录 dir /usr/local/redis-cluster/data # 持久化 dbfilename dump-6379.rdb # 开启AOF appendonly yes appendfilename appendonly-6379.aof从节点1配置 (redis-slave1.conf)# 端口 port 6380 # 后台运行 daemonize yes # PID文件 pidfile /var/run/redis_6380.pid # 日志文件 logfile /usr/local/redis-cluster/logs/redis_6380.log # 工作目录 dir /usr/local/redis-cluster/data # 持久化 dbfilename dump-6380.rdb # 开启AOF appendonly yes appendfilename appendonly-6380.aof # 指定主节点 replicaof 127.0.0.1 6379 # 主节点密码如果设置了 masterauth 123456从节点2配置 (redis-slave2.conf)# 端口 port 6381 # 后台运行 daemonize yes # PID文件 pidfile /var/run/redis_6381.pid # 日志文件 logfile /usr/local/redis-cluster/logs/redis_6381.log # 工作目录 dir /usr/local/redis-cluster/data # 持久化 dbfilename dump-6381.rdb # 开启AOF appendonly yes appendfilename appendonly-6381.aof # 指定主节点 replicaof 127.0.0.1 6379 # 主节点密码如果设置了 masterauth 1234563. 启动服务redis-server /usr/local/redis-cluster/conf/redis-master.conf redis-server /usr/local/redis-cluster/conf/redis-slave1.conf redis-server /usr/local/redis-cluster/conf/redis-slave2.conf4. 验证主从关系# 连接主节点 redis-cli -p 6379 127.0.0.1:6379 info replication # 连接从节点 redis-cli -p 6380 127.0.0.1:6380 info replication5. 全量复制与增量复制对比二、哨兵模式 (Sentinel)哨兵模式在主从复制的基础上增加了高可用HA能力。通过多个哨兵进程监控主从节点当主节点故障时哨兵会自动选举一个从节点升级为新的主节点并通知其他从节点切换主节点实现故障转移。1. 核心原理监控哨兵进程持续监控主节点和从节点的健康状态。通知当某个节点主或从出现故障时哨兵会向系统管理员发送通知。故障转移当主节点故障时哨兵会选举一个从节点成为新的主节点并让其他从节点指向新的主节点。2. 搭建步骤与配置同样以单机伪集群为例部署1个主节点、2个从节点和3个哨兵节点。主节点配置 (redis-master.conf)port 6379 daemonize yes pidfile /var/run/redis_6379.pid logfile /usr/local/redis-cluster/logs/redis_6379.log dir /usr/local/redis-cluster/data dbfilename dump-6379.rdb appendonly yes appendfilename appendonly-6379.aof # 设置密码可选 requirepass 123456从节点1配置 (redis-slave1.conf)port 6380 daemonize yes pidfile /var/run/redis_6380.pid logfile /usr/local/redis-cluster/logs/redis_6380.log dir /usr/local/redis-cluster/data dbfilename dump-6380.rdb appendonly yes appendfilename appendonly-6380.aof # 指向主节点 replicaof 127.0.0.1 6379 # 如果主节点有密码 masterauth 123456哨兵1配置 (sentinel1.conf)port 26379 daemonize yes pidfile /var/run/redis-sentinel_26379.pid logfile /usr/local/redis-cluster/logs/sentinel_26379.log dir /usr/local/redis-cluster/data # 监控主节点 sentinel monitor mymaster 127.0.0.1 6379 2 # 密码如果主节点有 sentinel auth-pass mymaster 123456 # 故障转移超时时间 sentinel down-after-milliseconds mymaster 5000 # 故障转移后最多保留的失败次数 sentinel failover-timeout mymaster 10000 # 故障转移时最多同时迁移的key数量 sentinel parallel-syncs mymaster 1哨兵2配置 (sentinel2.conf)port 26380 daemonize yes pidfile /var/run/redis-sentinel_26380.pid logfile /usr/local/redis-cluster/logs/sentinel_26380.log dir /usr/local/redis-cluster/data sentinel monitor mymaster 127.0.0.1 6379 2 sentinel auth-pass mymaster 123456 sentinel down-after-milliseconds mymaster 5000 sentinel failover-timeout mymaster 10000 sentinel parallel-syncs mymaster 1哨兵3配置 (sentinel3.conf)port 26381 daemonize yes pidfile /var/run/redis-sentinel_26381.pid logfile /usr/local/redis-cluster/logs/sentinel_26381.log dir /usr/local/redis-cluster/data sentinel monitor mymaster 127.0.0.1 6379 2 sentinel auth-pass mymaster 123456 sentinel down-after-milliseconds mymaster 5000 sentinel failover-timeout mymaster 10000 sentinel parallel-syncs mymaster 13. 启动服务# 启动Redis节点 redis-server /usr/local/redis-cluster/conf/redis-master.conf redis-server /usr/local/redis-cluster/conf/redis-slave1.conf redis-server /usr/local/redis-cluster/conf/redis-slave2.conf # 启动哨兵 redis-sentinel /usr/local/redis-cluster/conf/sentinel1.conf redis-sentinel /usr/local/redis-cluster/conf/sentinel2.conf redis-sentinel /usr/local/redis-cluster/conf/sentinel3.conf4. 测试故障转移# 连接哨兵查看主节点 redis-cli -p 26379 127.0.0.1:26379 sentinel master mymaster # 关闭主节点 redis-cli -p 6379 shutdown # 等待哨兵选举后再次查看 127.0.0.1:26379 sentinel master mymaster三、官方集群 (Redis Cluster)Redis Cluster是官方提供的分布式解决方案通过数据分片Sharding解决单节点内存限制问题并内置高可用能力。它不需要中间件节点间直接通信。1. 核心原理数据分片Redis Cluster将16384个哈希槽Hash Slot分布在多个主节点上。哈希槽分配每个键通过CRC16算法计算后对16384取模决定其所在的哈希槽。高可用每个主节点都绑定一个或多个从节点。当主节点故障时从节点会升级为新的主节点。2. 搭建步骤与配置以单机伪集群为例部署3个主节点和3个从节点。主节点1配置 (redis-7000.conf)port 7000 daemonize yes pidfile /var/run/redis_7000.pid logfile /usr/local/redis-cluster/logs/redis_7000.log dir /usr/local/redis-cluster/data dbfilename dump-7000.rdb appendonly yes appendfilename appendonly-7000.aof # 开启集群模式 cluster-enabled yes cluster-config-file nodes-7000.conf cluster-node-timeout 5000 # 关闭集群完整性检查单机测试 cluster-require-full-coverage no从节点1配置 (redis-7003.conf)port 7003 daemonize yes pidfile /var/run/redis_7003.pid logfile /usr/local/redis-cluster/logs/redis_7003.log dir /usr/local/redis-cluster/data dbfilename dump-7003.rdb appendonly yes appendfilename appendonly-7003.aof # 开启集群模式 cluster-enabled yes cluster-config-file nodes-7003.conf cluster-node-timeout 5000 # 指定主节点 replicaof 127.0.0.1 7000依次创建 redis-7001.conf, redis-7002.conf, redis-7004.conf, redis-7005.conf, redis-7006.conf并修改端口号。3. 启动服务redis-server /usr/local/redis-cluster/conf/redis-7000.conf redis-server /usr/local/redis-cluster/conf/redis-7001.conf redis-server /usr/local/redis-cluster/conf/redis-7002.conf redis-server /usr/local/redis-cluster/conf/redis-7003.conf redis-server /usr/local/redis-cluster/conf/redis-7004.conf redis-server /usr/local/redis-cluster/conf/redis-7005.conf redis-server /usr/local/redis-cluster/conf/redis-7006.conf4. 创建集群# 进入Redis源码目录 cd /path/to/redis-5.0.5/src # 使用官方工具创建集群 ./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执行命令后会提示输入 yes 来确认分配哈希槽和创建集群。5. 连接集群# 使用 -c 参数连接集群 redis-cli -c -p 7000 # 设置key 127.0.0.1:7000 set name redis-cluster # 读取key可能重定向到其他节点 127.0.0.1:7000 get name - Redirected to slot [12182] located at 127.0.0.1:7002 redis-cluster 127.0.0.1:7002四、总结与对比特性主从复制哨兵模式官方集群读写分离✅✅✅数据分片❌❌✅高可用❌✅ (自动故障转移)✅ (内置)部署复杂度低中高适用场景读多写少、简单扩展需要高可用、读写分离大数据量、高并发

相关文章:

深入剖析 Redis 的三种集群方式以及实战配置

Redis作为高性能内存数据库,其集群化部署是解决单节点性能瓶颈与实现高可用的关键。本篇将深入剖析三种主流的集群方式:主从复制、哨兵模式(Sentinel)与官方集群(Cluster),并为您提供详细的搭建…...

终极指南:如何免费实现PC微信QQ消息防撤回,告别信息丢失烦恼

终极指南:如何免费实现PC微信QQ消息防撤回,告别信息丢失烦恼 【免费下载链接】RevokeMsgPatcher :trollface: A hex editor for WeChat/QQ/TIM - PC版微信/QQ/TIM防撤回补丁(我已经看到了,撤回也没用了) 项目地址: h…...

Navicat 17.3新功能实测:AI辅助数据库管理的5个实用场景

Navicat 17.3新功能实测:AI辅助数据库管理的5个实用场景 数据库管理工具正在经历一场由AI驱动的变革。作为行业标杆的Navicat在17.3版本中引入了一系列智能功能,这些创新正在重新定义DBA和开发者的日常工作方式。本文将深入剖析五个最具实用价值的AI应用…...

win10 Windows服务器开放端口防火墙规则 远程控制桌面

旧电脑作为局域网服务器配置使用,打开远程桌面,配置静态IP开放端口号netsh advfirewall firewall add rule name"3306-TCP-IN" dirin actionallow protocolTCP localport3306 profileany enableyes netsh advfirewall firewall add rule name&…...

GLM-4.7-Flash实战体验:用Ollama一键搭建,实测代码生成与文档摘要

GLM-4.7-Flash实战体验:用Ollama一键搭建,实测代码生成与文档摘要 1. 快速部署GLM-4.7-Flash 1.1 镜像选择与启动 在CSDN星图镜像广场搜索"ollama glm-4.7-flash",找到对应的镜像卡片。点击"一键部署"按钮后&#xff…...

UPX终极压缩工具:如何让可执行文件瘦身50%以上?

UPX终极压缩工具:如何让可执行文件瘦身50%以上? 【免费下载链接】upx UPX - the Ultimate Packer for eXecutables 项目地址: https://gitcode.com/gh_mirrors/up/upx 你是否曾经因为软件安装包太大而烦恼?或者因为移动存储空间不足而…...

SUPER COLORIZER系统集成:在.NET框架中调用模型服务的完整方案

SUPER COLORIZER系统集成:在.NET框架中调用模型服务的完整方案 如果你正在用.NET技术栈开发桌面应用或者网站,想把那个能把黑白照片变彩色的SUPER COLORIZER功能加进去,那你来对地方了。我见过不少团队,面对一个现成的AI模型服务…...

免费微信聊天记录导出工具:WeChatExporter完整使用指南

免费微信聊天记录导出工具:WeChatExporter完整使用指南 【免费下载链接】WeChatExporter 一个可以快速导出、查看你的微信聊天记录的工具 项目地址: https://gitcode.com/gh_mirrors/wec/WeChatExporter 想要永久保存珍贵的微信聊天记录吗?WeChat…...

RWKV7-1.5B-g1a实战落地:制造业设备维保记录自动归类与故障要点提取

RWKV7-1.5B-g1a实战落地:制造业设备维保记录自动归类与故障要点提取 1. 项目背景与挑战 在制造业设备管理中,维保记录是宝贵的知识资产。传统方式面临两大痛点: 人工归类效率低:工程师需要逐条阅读记录,手动分类到不…...

Maxwell 3D仿真避坑指南:从‘铜线圈’案例看新手最易忽略的5个设置(附正确操作截图)

Maxwell 3D仿真避坑指南:从‘铜线圈’案例看新手最易忽略的5个设置 在电磁场仿真领域,Maxwell 3D作为行业标杆工具,其强大的计算能力往往被新手用户低估——不是因为它不够强大,而是因为那些隐藏在默认参数背后的"魔鬼细节&q…...

Fish Speech 1.5多场景落地:电商商品播报、AI讲师、无障碍阅读实战

Fish Speech 1.5多场景落地:电商商品播报、AI讲师、无障碍阅读实战 1. 引言:当AI语音合成走进真实业务 想象一下,你是一个电商运营,每天需要为上百个商品录制介绍音频,枯燥且耗时。或者,你是一位内容创作…...

Z-Image-Turbo-辉夜巫女开发者部署教程:Docker Compose编排Xinference+Gradio服务

Z-Image-Turbo-辉夜巫女开发者部署教程:Docker Compose编排XinferenceGradio服务 1. 开篇:快速搭建你的专属二次元画师 想不想拥有一个能随时召唤“辉夜巫女”的AI画师?今天,我们就来手把手教你,如何用最简单的方式&…...

KMS_VL_ALL_AIO:5分钟搞定Windows与Office激活的终极方案

KMS_VL_ALL_AIO:5分钟搞定Windows与Office激活的终极方案 【免费下载链接】KMS_VL_ALL_AIO Smart Activation Script 项目地址: https://gitcode.com/gh_mirrors/km/KMS_VL_ALL_AIO 你是否曾为复杂的Windows激活流程而烦恼?KMS_VL_ALL_AIO是一款智…...

用Backtrader构建智能交易系统:从OCO订单到Bracket策略全解析

用Backtrader构建智能交易系统:从OCO订单到Bracket策略全解析 1. 量化交易系统的核心组件 在构建量化交易系统时,Backtrader作为一款功能强大的Python框架,提供了完整的解决方案。其核心组件包括: 数据加载:支持多种数…...

老王-先扮演再成为

先扮演,再成为 ——人生的自我预言“你想成为谁, 就先扮演谁。”🎭 人生就是一场—— 自我预言的实现。💡 为什么有人“装着装着就成真了”? 因为—— 装的本质,是先相信自己, 再让世界相信你。…...

空洞骑士模组自动化管理工具:告别繁琐操作的智能解决方案

空洞骑士模组自动化管理工具:告别繁琐操作的智能解决方案 【免费下载链接】Scarab An installer for Hollow Knight mods written in Avalonia. 项目地址: https://gitcode.com/gh_mirrors/sc/Scarab 在独立游戏模组管理领域,空洞骑士玩家长期面临…...

告别SimpleFOC库,手搓STM32的SVPWM与电流环:一份给想深入理解FOC原理的极客笔记

从寄存器到旋转磁场:STM32裸写FOC全流程实战指南 当电机控制遇上极客精神,SimpleFOC这类开源库反而成了阻碍——它们封装了太多关键细节。本文将带你用STM32的TIM寄存器直接生成SVPWM波形,通过串口打印的Ualpha/Ubeta数据验证每一步变换&…...

4步攻克:学术写作中的GB/T 7714-2015参考文献自动化难题

4步攻克:学术写作中的GB/T 7714-2015参考文献自动化难题 【免费下载链接】Chinese-STD-GB-T-7714-related-csl GB/T 7714相关的csl以及Zotero使用技巧及教程。 项目地址: https://gitcode.com/gh_mirrors/chi/Chinese-STD-GB-T-7714-related-csl 在学术写作中…...

突破语言壁垒:Masa模组中文包解锁高效游戏体验

突破语言壁垒:Masa模组中文包解锁高效游戏体验 【免费下载链接】masa-mods-chinese 一个masa mods的汉化资源包 项目地址: https://gitcode.com/gh_mirrors/ma/masa-mods-chinese Masa模组中文包作为一款专业的模组本地化工具,专为解决Minecraft玩…...

PHP文件上传的7种隐藏玩法:从phtml到.htaccess的完整绕过指南

PHP文件上传漏洞的深度攻防手册:从后缀绕过到WAF对抗 在Web安全领域,文件上传漏洞始终是渗透测试中最具破坏力的攻击向量之一。当开发者未对上传文件进行严格校验时,攻击者可能通过精心构造的文件获取服务器控制权。本文将系统剖析PHP环境下七…...

Java 开发者必看:JBoltAI 框架支持服务详解

对于 Java 技术团队而言,在现有技术体系中落地 AI 应用,常会遇到开发卡点、方案不确定、项目进度紧张等问题。JBoltAI 作为适配 Java 生态的企业级 AI 应用开发框架,推出了框架专家支持计划,为开发团队提供对应的技术支撑方案。一…...

PDF补丁丁实战指南:解决三大核心痛点的高效解决方案

PDF补丁丁实战指南:解决三大核心痛点的高效解决方案 【免费下载链接】PDFPatcher PDF补丁丁——PDF工具箱,可以编辑书签、剪裁旋转页面、解除限制、提取或合并文档,探查文档结构,提取图片、转成图片等等 项目地址: https://gitc…...

OpenClaw对比测试:Qwen3-VL:30B与GPT-4V多模态能力实测

OpenClaw对比测试:Qwen3-VL:30B与GPT-4V多模态能力实测 1. 测试背景与动机 最近在星图平台部署了Qwen3-VL:30B多模态模型,想验证它在实际任务中的表现。作为长期使用GPT-4V的用户,我决定用相同的OpenClaw框架对两者进行对比测试。这个测试源…...

别再傻傻分不清了!STM32定时器里Prescaler和ClockDivision到底有啥区别?

STM32定时器双分频机制深度解析:从Prescaler到ClockDivision的实战指南 引言:当电机转速突然失控时 那是一个加班的深夜,实验室里只有示波器的荧光在闪烁。我正调试一套基于STM32的直流电机控制系统,PWM波形突然出现诡异的抖动——…...

24小时值守的AI助理:OpenClaw+nanobot定时监控与报警实践

24小时值守的AI助理:OpenClawnanobot定时监控与报警实践 1. 为什么需要24小时值守的AI助理? 凌晨三点,我被一阵急促的手机铃声惊醒。运维同事焦急地告诉我生产环境出现故障,而这个问题其实两小时前就已经出现了。那一刻我突然意…...

Y Combinator人工智能初创企业投资趋势研究报告

Y Combinator人工智能初创企业投资趋势研究报告封面 报告名称: Y Combinator人工智能初创企业投资趋势研究报告 (2023-2024) 报告编号: AI-INDUSTRY-2024-001 发布机构: 商业研究报告中心 发布日期: 2024年9月 版本号: V1.0 主要分析师: Harshit Tyagi (原数据与分析) 报告类型…...

零基础玩转LiuJuan20260223Zimage:Docker+Gradio,小白也能轻松上手

零基础玩转LiuJuan20260223Zimage:DockerGradio,小白也能轻松上手 想不想自己动手,快速拥有一个能画出特定风格图片的AI小助手?今天,我就带你从零开始,一步步搞定LiuJuan20260223Zimage这个有趣的文生图模…...

模块导入失败完全解决指南:ComfyUI-Impact-Pack的环境配置终极方案

模块导入失败完全解决指南:ComfyUI-Impact-Pack的环境配置终极方案 【免费下载链接】ComfyUI-Impact-Pack 项目地址: https://gitcode.com/gh_mirrors/co/ComfyUI-Impact-Pack 在ComfyUI工作流搭建过程中,当用户尝试加载Impact-Pack扩展时&#…...

Phi-3-Mini-128K实际项目应用:集成至内部OA系统实现自然语言工单处理

Phi-3-Mini-128K实际项目应用:集成至内部OA系统实现自然语言工单处理 想象一下这个场景:公司内部的OA系统里,每天涌入上百条工单。客服同事需要手动阅读、分类、填写表单,再分发给不同的处理部门。这个过程不仅耗时,还…...

Windows 10/11 本地部署 Coze-Studio 完整避坑指南:从 Docker 配置到知识库向量模型

Windows 10/11 本地部署 Coze-Studio 全流程实战手册 作为一名长期在 Windows 平台进行 AI 应用开发的工程师,我深知本地环境部署开源项目时可能遇到的各种"坑"。本文将分享我在 Windows 10/11 系统上成功部署 Coze-Studio 的完整经验,从 Doc…...