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

高可用 Redis 服务架构分析与搭建

目录

引言

一、高可用 Redis 架构的核心概念

1.1 Redis 的单点问题

1.2 高可用性的定义

1.3 Redis 高可用方案概述

二、Redis Sentinel 架构详解与搭建

2.1 Sentinel 模式简介

2.2 架构拓扑图

2.3 环境准备

安装 Docker

创建目录结构

2.4 配置文件编写

redis-sentinel/master/redis.conf

redis-sentinel/slave1/redis.conf

redis-sentinel/sentinel1/sentinel.conf

2.5 启动容器

2.6 测试 Sentinel 故障转移

三、Redis Cluster 架构详解与搭建

3.1 Redis Cluster 简介

3.2 架构拓扑图

3.3 环境准备

创建 docker-compose.yml

3.4 启动集群

3.5 初始化 Cluster

3.6 测试读写

四、高可用 Redis 架构对比与选型建议

五、客户端连接与高可用支持

5.1 Python 示例(使用 redis-py-cluster)

5.2 Java 示例(使用 Lettuce)

六、监控与运维实践

6.1 Prometheus + Grafana 监控 Redis

6.2 日志收集与告警

七、总结

附录:完整部署脚本与源码

A.1 Sentinel 模式部署脚本

A.2 Cluster 模式部署脚本

引言

Redis(Remote Dictionary Server)是一个开源的高性能键值数据库,广泛用于缓存、消息队列和实时数据处理等场景。在高并发、大规模分布式系统中,如何确保 Redis 的高可用性(High Availability, HA)是关键问题之一。本文将深入探讨高可用 Redis 架构的设计与实现,并提供一个完整的案例及可运行的代码示例。

一、高可用 Redis 架构的核心概念

1.1 Redis 的单点问题

默认情况下,Redis 是一个单实例服务。虽然性能极高,但一旦该节点宕机或网络中断,整个 Redis 服务就会不可用,导致业务中断。

1.2 高可用性的定义

高可用性指的是系统在面对故障时仍能持续提供服务的能力。通常通过冗余、自动故障转移(Failover)、负载均衡等机制来实现。

1.3 Redis 高可用方案概述

常见的 Redis 高可用方案包括:

  • Redis 主从复制(Replication)
  • Redis Sentinel(哨兵模式)
  • Redis Cluster(集群模式)
  • 基于 Proxy 的分片集群(如 Codis、Twemproxy)

我们将重点介绍 Redis SentinelRedis Cluster,并分别给出部署与代码示例。

二、Redis Sentinel 架构详解与搭建

2.1 Sentinel 模式简介

Redis Sentinel 是官方提供的高可用解决方案,具备以下功能:

  • 监控主从节点状态
  • 自动进行故障转移(Master Down 后选举新 Master)
  • 提供配置管理接口(客户端可以通过 Sentinel 获取当前 Master 地址)

2.2 架构拓扑图

Client|
Sentinel (3个节点)|
Redis Master <--> Redis Slave (多个)

2.3 环境准备

我们将在本地使用 Docker 搭建一个包含 1 个 Redis Master、2 个 Slave 和 3 个 Sentinel 的测试环境。

安装 Docker
sudo apt update && sudo apt install docker.io -y
创建目录结构
mkdir -p redis-sentinel/{master,slave1,slave2,sentinel1,sentinel2,sentinel3}

2.4 配置文件编写

redis-sentinel/master/redis.conf
port 6379
daemonize yes
pidfile /var/run/redis_6379.pid
dir /data
requirepass "mypassword"
redis-sentinel/slave1/redis.conf
port 6380
daemonize yes
pidfile /var/run/redis_6380.pid
dir /data
slaveof 127.0.0.1 6379
masterauth "mypassword"
requirepass "mypassword"

同理配置 slave2 使用端口 6381

redis-sentinel/sentinel1/sentinel.conf
port 26379
sentinel monitor mymaster 127.0.0.1 6379 2
sentinel auth-pass mymaster mypassword
sentinel down-after-milliseconds mymaster 5000
sentinel failover-timeout mymaster 10000

其他两个 Sentinel 配置类似,使用不同端口:26380, 26381

2.5 启动容器

docker run --name redis-master -d -v $(pwd)/redis-sentinel/master:/usr/local/etc/redis --network host redis redis-server /usr/local/etc/redis/redis.confdocker run --name redis-slave1 -d -v $(pwd)/redis-sentinel/slave1:/usr/local/etc/redis --network host redis redis-server /usr/local/etc/redis/redis.confdocker run --name redis-slave2 -d -v $(pwd)/redis-sentinel/slave2:/usr/local/etc/redis --network host redis redis-server /usr/local/etc/redis/redis.confdocker run --name sentinel1 -d -v $(pwd)/redis-sentinel/sentinel1:/usr/local/etc/redis --network host redis redis-sentinel /usr/local/etc/redis/sentinel.confdocker run --name sentinel2 -d -v $(pwd)/redis-sentinel/sentinel2:/usr/local/etc/redis --network host redis redis-sentinel

相关文章:

  • 03. C#入门系列【变量和常量】编程世界里的“百变魔盒”与“永恒石碑”
  • 刚入门3DGS的新手小白能够做的工作
  • Vue3 watch 使用与注意事项
  • C++复习核心精华
  • 本地处理 + GPU 加速 模糊视频秒变 4K/8K 修复视频老旧素材
  • 09_模型训练篇-卷积(上):如何用卷积为计算机“开天眼”?
  • [项目总结] 基于Docker与Nginx对项目进行部署
  • rt-linux里的泛rtmutex锁的调用链整体分析
  • 在飞牛nas系统上部署gitlab
  • 【linux】systemctl基本语法
  • libreoffice容器word转pdf
  • 【b站计算机拓荒者】【2025】微信小程序开发教程 - chapter2 小程序核心
  • (九)PMSM驱动控制学习---高阶滑膜观测器
  • 手眼标定:九点标定、十二点标定、OpenCV 手眼标定
  • 机械师安装ubantu双系统:三、GPT分区安装Ubantu
  • c/c++的opencv伽马噪声
  • Axure 基本用法学习笔记
  • 图解BERT
  • 【第四十六周】文献阅读:从 RAG 到记忆:大型语言模型的非参数持续学习
  • 中间件安全IISApacheTomcatNginx弱口令不安全配置CVE
  • 浅谈幼儿园网站的建设与管理制度/创意设计
  • 惠州自适应网站建设/国内前10电商代运营公司
  • 江西建设职业技术学院最新官方网站/黑帽seo排名技术
  • 墨刀做的网站设计/seo算法优化
  • 介绍营销的网站/今日最火的新闻
  • 网站的主机选择/东莞seo公司