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

Redis安装指南:单机、主从、哨兵、集群模式详解

Redis系列文章超链接:

《Redis安装指南:单机、主从、哨兵、集群模式详解》​​​​​​​

《Redis基础结构的概念以及应用场景》

《Redis数据安全性详解–RDB、AOF持久化技术》

一、前言

Redis 是一款高性能、基于内存的键值对数据库,凭借超高吞吐、低延迟的特性,广泛应用于项目缓存、分布式锁、限时业务、消息队列、热点数据存储等场景。

随着业务体量增长,Redis 的部署架构需要逐级升级,从最简单的单机部署,逐步迭代至主从复制、哨兵高可用、Cluster 分布式集群。本文基于CentOS Linux 环境、Redis7.2.5 版本,一站式讲解四种主流架构的核心原理、详细部署步骤、状态验证、故障模拟,所有命令可直接落地实操,适合开发、运维人员学习与生产部署参考。

环境统一说明

  • 操作系统:CentOS 7/8

  • 软件版本:Redis 7.2.5

  • 编译依赖:GCC

  • 集群机器规划:3台服务器(192.168.10.1、192.168.10.2、192.168.10.3)

二、通用前置环境准备(所有架构共用)

Redis 基于 C 语言开发,安装前必须配置 GCC 编译环境,所有服务器统一执行以下操作。

1. 安装 GCC 依赖

yuminstallgcc-ygcc--version

2. 下载、编译、安装 Redis

mkdir-p/opt/software/rediscd/opt/software/rediswgethttps://download.redis.io/redis-stable.tar.gztar-xzfredis-stable.tar.gzcdredis-stablemakeinstallll /usr/local/bin

3. Redis 核心工具说明

  • redis-server:Redis 服务启动核心程序

  • redis-cli:Redis 客户端连接工具

  • redis-sentinel:哨兵模式启动程序

  • redis-benchmark:Redis 性能压测工具

  • redis-check-aof/redis-check-rdb:持久化文件修复工具

三、架构一:Redis 单机部署

单机部署是 Redis 最基础的部署模式,部署简单、资源占用低,仅适用于本地开发、功能测试、小型临时业务,不支持高可用、无数据备份、存在单点故障

1. 核心配置修改

编辑 Redis 核心配置文件,开启后台运行、远程访问、日志记录等核心能力:

vimredis.conf

修改以下关键配置:

bind * -::* protected-mode no daemonize yes logfile /opt/software/redis/redis-stable/redis.log dir /opt/software/redis requirepass 123456 appendonly yes

2. 服务启动与连接测试

redis-server redis.conf redis-cli127.0.0.1:6379>auth123456127.0.0.1:6379>setname redis7127.0.0.1:6379>get name redis-clishutdownquit

3. 架构优缺点与适用场景

优点:部署极简、零运维成本、性能损耗极低

缺点:单点故障风险极高,服务宕机即不可用、数据丢失;不支持读写分离、无法横向扩容

适用场景:本地开发调试、小型测试项目、低优先级临时缓存业务

四、架构二:Redis 主从复制

主从复制是 Redis 高可用的基础架构,核心是一主多从、单向数据同步。主节点负责处理写请求,从节点异步同步主节点数据、承担读请求,实现数据备份与读写分离,有效缓解单机读压力。

1. 架构部署规划

  • 主节点(Master):192.168.10.1:6379

  • 从节点(Slave1):192.168.10.2:6379

  • 从节点(Slave2):192.168.10.3:6379

2. 部署配置

主节点无需额外配置,沿用单机配置即可;两台从节点需单独配置主节点关联信息

编辑从节点 redis.conf,追加以下配置:

replicaof 192.168.10.1 6379 masterauth 123456 replica-read-only yes

3. 启动与状态验证

启动顺序:先启动主节点,再启动所有从节点

redis-server redis.conf redis-cli-a123456127.0.0.1:6379>info replication

正常输出结果:

role:master connected_slaves:2 slave0:ip=192.168.10.2,port=6379,state=online slave1:ip=192.168.10.3,port=6379,state=online

4. 功能测试

  • 主节点写入数据,所有从节点可正常读取

  • 从节点默认只读,执行写入操作会直接报错,保障数据一致性

5. 架构优缺点

优点:实现数据热备份,避免数据丢失;读写分离,大幅提升读请求并发能力;是哨兵、集群架构的基础

缺点:无自动故障转移,主节点宕机需人工切换主从;写请求仍集中在单主节点,无法扩容;异步复制存在数据延迟,极端场景可能丢数据

五、架构三:Redis 哨兵模式

哨兵模式基于主从复制架构升级,通过独立的哨兵集群实现节点监控、故障自动判定、主从自动切换、客户端配置推送,彻底解决主从架构人工运维的痛点,是中小型业务主流高可用方案。

1. 核心原理

  • 监控:哨兵进程定时通过 PING 指令检测主、从节点存活状态

  • 主观下线:单个哨兵判定主节点超时无响应,标记为主观下线

  • 客观下线:超过半数哨兵判定主节点故障,正式标记为客观下线

  • 故障转移:自动选举最优从节点升级为新主,其余从节点自动关联新主

2. 哨兵集群规范

生产环境硬性要求:哨兵节点数量必须为奇数(3/5个),避免票数平分无法选举;本文采用 3 台服务器各部署 1 个哨兵的标准架构。

3. 哨兵配置(三台机器统一配置)

编辑哨兵配置文件 sentinel.conf:

vimsentinel.conf

核心配置如下:

protected-mode no port 26379 daemonize yes logfile /opt/software/redis/redis-stable/sentinel.log dir /opt/software/redis sentinel monitor mymaster 192.168.10.1 6379 2 sentinel down-after-milliseconds mymaster 30000 sentinel failover-timeout mymaster 180000 sentinel auth-pass mymaster 123456

4. 启动与状态验证

redis-sentinel sentinel.conf redis-cli-p26379127.0.0.1:26379>info sentinel

正常输出:3个哨兵正常在线,主从节点状态健康

5. 架构优缺点

优点:实现主节点故障全自动转移,无需人工干预,保障服务高可用;保留读写分离优势,运维成本低

缺点:写请求依旧是单点瓶颈,无法横向扩容;异步复制存在极小概率数据丢失

适用场景:中小型业务、读多写少、需要自动容灾,无需海量数据分片的场景

六、架构四:Redis Cluster 三主三从集群

Redis Cluster 是 Redis 官方分布式集群方案,彻底解决单机内存限制、写请求单点瓶颈问题,通过哈希槽分片 + 多主多从架构,实现数据分布式存储、读写横向扩容、节点故障自动转移,是大型互联网项目的标准生产架构。

1. 核心原理

  • 哈希槽分片:集群共 16384 个哈希槽(0-16383),Key 通过 CRC16 算法取余分配至对应主节点

  • 三主三从架构:3个主节点分摊所有数据槽位,每个主节点搭配1个从节点做数据备份

  • 跨机器容灾:主从节点交叉部署,单台服务器整机宕机不会导致分片丢失

2. 集群部署规划

3台服务器,每台部署2个Redis实例(6379/6380),主从交叉错开:

  • 192.168.10.1:6379(主)、6380(从)

  • 192.168.10.2:6379(主)、6380(从)

  • 192.168.10.3:6379(主)、6380(从)

3. 集群配置文件部署

所有服务器统一创建集群目录,编写两套端口配置文件:

mkdir-p/opt/software/redis/redis-stable/clustermkdir-p/opt/software/redis/clustervim./cluster/redis_6379.confvim./cluster/redis_6380.conf

6379 配置文件

bind * -::* daemonize yes protected-mode no cluster-enabled yes cluster-node-timeout 5000 dir "/opt/software/redis/cluster" appendonly yes port 6379 logfile "/opt/software/redis/redis-stable/cluster/redis6379.log" cluster-config-file nodes-6379.conf appendfilename "appendonly6379.aof" dbfilename "dump6379.rdb"

6380 配置文件(仅修改端口与文件名):

bind * -::* daemonize yes protected-mode no cluster-enabled yes cluster-node-timeout 5000 dir "/opt/software/redis/cluster" appendonly yes port 6380 logfile "/opt/software/redis/redis-stable/cluster/redis6380.log" cluster-config-file nodes-6380.conf appendfilename "appendonly6380.aof" dbfilename "dump6380.rdb"

4. 启动所有集群实例

三台机器全部执行,启动6个Redis节点:

redis-server ./cluster/redis_6379.conf redis-server ./cluster/redis_6380.confpsaux|grepredis

5. 一键构建三主三从集群

任意一台机器执行集群创建命令,--cluster-replicas 1表示每个主节点分配1个从节点:

redis-cli--clustercreate --cluster-replicas1\192.168.10.1:6379192.168.10.1:6380\192.168.10.2:6379192.168.10.2:6380\192.168.10.3:6379192.168.10.3:6380

出现确认提示输入yes,系统自动完成槽位分配、主从绑定。

6. 集群状态验证

redis-cli cluster info redis-cli cluster nodes redis-cli-csetuser zhangsan get user

7. 集群故障转移测试

  1. 关闭任意主节点,集群自动触发故障转移,对应从节点升级为主节点

  2. 重启故障节点,自动降级为从节点,重新加入集群

  3. 全程集群服务不中断,实现无感知容灾

8. 架构优缺点

优点:数据分片突破单机内存限制;多主节点实现读写横向扩容;自带全自动故障转移,高可用能力拉满;支持海量数据、高并发业务

缺点:部署与运维复杂度高;不支持跨槽位多 Key 事务;批量操作存在槽位限制

适用场景:大型分布式项目、海量缓存数据、高并发读写、需要横向扩容的生产业务

八、高频实操命令汇总

1. 服务启停命令

redis-server redis.conf# 启动哨兵redis-sentinel sentinel.conf redis-clishutdown# 关闭哨兵redis-cli-p26379shutdown

2. 状态查看命令

redis-cli info replication redis-cli-p26379info sentinel# 查看集群整体信息redis-cli cluster info# 查看集群节点详情redis-cli cluster nodes# 实时监控日志tail-fredis.logtail-fsentinel.log

3. 客户端连接命令

# 带密码连接单机redis-cli-a123456redis-cli-c# 连接哨兵redis-cli-p26379

九、生产环境核心注意事项

  • 哨兵集群节点数量必须为奇数,禁止2台机器部署哨兵,避免投票失效

  • Redis Cluster 主从节点必须跨机器部署,杜绝同机主从,防止整机宕机导致分片丢失

  • 生产环境务必开启 AOF 持久化,最大限度降低数据丢失风险

  • 哨兵模式无法实现写扩容,海量高并发写业务直接选用 Cluster 集群

  • 主从复制为异步同步,存在短暂数据延迟,强一致性业务需额外适配

  • 版本升级后部分配置会重置,部署完成需备份配置模板,避免重复配置

  • 测试环境可关闭防火墙,生产环境需精准开放 6379、26379 及集群总线端口

http://www.gsyq.cn/news/1582068.html

相关文章:

  • HarmonyOS ArkUI 自定义跑道布局:CustomMultiChildLayout 模式深度实践
  • ABB 控制器 4LA41100102V1.3
  • 如何用last30days-skill在30秒内完成全网信息调研:AI驱动的市场洞察工具完全指南
  • GEO避坑指南,蒲公英AI白帽合规运营
  • 成都天府广场的光,藏着城市照明的升级密码
  • AI企业实际开发经验,我是如何把生产环境的意图识别准确率从 86% 优化到 97%
  • CSDN_Blog_Post
  • iNeuOS_Doctor,一款基于人工智能在医疗领域的病情咨询及医学影像分析平台,例如CT\X光片\病理成像\诊断病历等 项目介绍
  • 【OpenClaw】一台 Windows 主机部署双 Gateway:两个微信 + 一台主机 + 模型隔离完整踩坑实录
  • VRTK v4农场示例:基于Tilia架构的现代VR开发实践
  • Harness 教程 08:日志查看与故障排查:Execution History、Step Log、Delegate 日志与 Kubernetes 事件定位:国内网络环境落地版
  • 题解:洛谷 AT_abc463_d [ABC463D] Maximize the Gap
  • 安达发|揭开照明行业“生产计划排单软件神器”的神秘面纱!
  • 什么是HVV行动(网络攻防演习)?什么是红蓝对抗?(非常详细)零基础入门到精通,收藏这一篇就够了
  • knowhere | 第九课:认证、额度、计费与限流
  • qsort :超级打包工
  • 技术深度解析:1Panel批量操作架构设计与多服务器并行管理实战
  • 外包工日常管理合规指南:从合同到结算,SaaS系统如何嵌入控制点
  • 西门子 CU240E-2 PN 控制单元专业维修服务
  • AI电商工具测评!商品图片AI味太重怎么办?试试这些工具
  • AI写论文工具深度测评:通用大模型与专业工具的真实表
  • [STM32 HAL库][定时器]PWM实验笔记
  • C++ 利用Clock类和Date类定义一个带日期的时钟类ClockWithDate,且对该对象能进行增加秒数的操作
  • 古韵楚风,诗意天成——探寻《诗经》《楚辞》中的绝美名字
  • 微软把 Windows 计算器开源了,3 万 Star 背后藏着什么
  • CocoaHTTPServer:为Apple生态系统构建的嵌入式HTTP服务器框架
  • 快慢指针巧解链表环检测(多解)
  • 2026燕麦奶口碑排行:营养师推荐清单来了
  • 红日靶场二:WebLogic CVE-2019-2725 到域控沦陷全流程
  • 桑坦德银行向全体员工开放AI工具,首季创造3500万欧元价值