当前位置: 首页 > 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
http://www.xdnf.cn/news/634555.html

相关文章:

  • 【C/C++】从零开始掌握Kafka
  • P2676 [USACO07DEC] Bookshelf B
  • 电商小程序店铺详情页:头部无限分类与筛选功能实现
  • LabVIEW实战项目推荐与学习建议
  • 打卡第28天:装饰器
  • 【HarmonyOS5】DevEco Studio 预览器与模拟工具详解
  • 掌握聚合函数:COUNT,MAX,MIN,SUM,AVG,GROUP BY和HAVING子句的用法,Where和HAVING的区别
  • TIGER - 一个轻量高效的语音分离模型,支持人声伴奏分离、音频说话人分离等 支持50系显卡 本地一键整合包下载
  • 【Android】非System用户下Persist应用不自动拉起
  • 破解C/C++内存分配与管理:内存对象模型硬核剖析
  • LeetCode-图论-岛屿数量+腐烂的橘子
  • Leetcode 3103. 查找热门话题标签 II
  • 仓鼠找sugar--lca+图论判断点在路径
  • LangChain02-Agent与Memory模块
  • git子模块--命令--列表版
  • 机器学习——支持向量机SVM
  • 类欧几里得算法(floor_sum)
  • uni-app学习笔记十四-vue3中emit的使用
  • Lua 脚本在 Redis 中的运用-23(Lua 脚本语法教程)
  • 计算机视觉中的可重复性:深入案例分析与Python代码实现
  • 【MySQL成神之路】MySQL函数总结
  • 【寻找Linux的奥秘】第八章:进程控制
  • 我的第1个爬虫程序——豆瓣Top250爬虫的详细步骤指南
  • 云原生安全:网络协议TCP详解
  • GO 语言进阶之 时间处理和Json 处理
  • 2025.05.23 Axure 动态面板学习笔记
  • Python经典算法实战
  • 股票程序化交易-使用python获取新浪财经期货行情数据
  • 历年吉林大学保研上机真题
  • 历年复旦大学保研上机真题