聊聊 Redis 的高可用

核心概念
  • 高可用性(HA):确保系统在高于平均水平的时间内保持约定的运行性能水平,通常指正常运行时间。
  • Redis:内存数据库,数据存储在内存中,避免单点故障是关键。
Redis 高可用手段
  1. Redis 主从复制

    • 功能:多个 Redis 节点组成集群,主节点操作数据,从节点同步并提供查询。
    • 同步类型
      • 全量复制:首次数据同步。
      • 增量复制:网络断连后继续同步。
  2. Redis 哨兵模式

    • 功能:监控 Redis 节点,自动故障转移,配置提供者,通知功能。
    • 实现
      • 监控:检查主从实例状态。
      • 自动故障转移:主实例不可用时,从节点升级为主节点。
      • 配置提供者:客户端通过哨兵获取主节点地址。
      • 通知:故障转移结果通知客户端。
  3. Redis 集群(Cluster)

    • 功能:分布式数据库方案,通过分片管理数据,具备复制、故障转移和流量调度能力。
    • 特点:允许水平扩展,数据划分为16384个哈希槽。
主从复制详解
  • 全量复制流程

    1. 建立主从关系 :通过 replicaof 命令。
    2. 主从库间建立连接、协商同步
      • 从库发送 psync 命令,包含主库的 runIDoffset
    3. 主库将所有数据同步给从库
      • 主库执行 bgsave 生成 RDB 文件,发送给从库。
      • 从库清空当前数据库,加载 RDB 文件。
      • 主库记录写操作到 replication buffer
    4. 主库发送写命令给从库
      • 发送 replication buffer 中的修改操作。
  • 增量复制

    • 网络断连后采用,控制复制成本。
    • 使用 replication bufferreplication_backlog 缓冲区。
哨兵模式详解
  • 监控:哨兵检查主从实例状态。
  • 自动故障转移
    • 主观下线:哨兵未收到有效响应。
    • 客观下线:多个哨兵同意主实例不可用。
    • Leader 选举:选出 leader 进行故障转移。
    • 故障转移
      • 选择新主节点,更新其他节点配置。
      • 将旧主节点变成新主节点的从节点。
Redis 集群详解
  • 集群介绍

    • 数据分片,每个节点管理部分数据。
    • 使用 Gossip 协议交互节点信息。
  • 扩展方式

    • 纵向扩展(scale up):提升单个实例硬件资源。
    • 横向扩展(scale out):增加实例数,分摊数据。
总结
  • 高可用性:数据尽量不丢失,服务尽可能可用。
  • 数据持久化:AOF 和 RDB 保证数据安全。
  • 多节点:提高服务吞吐量和容量。
  • 读写分离:增加 Redis 的读负载能力。
  • 哨兵模式:实现故障自动转移,适用于业务规模扩展。
  • Redis Cluster:解决大数据量存储问题,便于横向扩展。
相关推荐
SelectDB31 分钟前
SelectDB 实时分析性能突出,宝舵成本锐减与性能显著提升的双赢之旅
大数据·数据库·数据分析
V+zmm1013432 分钟前
电器维修系统小程序+论文源码调试讲解
java·数据库·微信小程序·小程序·毕业设计
PawSQL37 分钟前
推理模型对SQL理解能力的评测:DeepSeek r1、GPT-4o、Kimi k1.5和Claude 3.7 Sonnet
java·数据库·人工智能·sql·sql优化·pawsql·deepseek
*星星之火*41 分钟前
【GPT入门】第12课 FunctionCall 生成数据库sql代码
数据库·sql·gpt
陈卓4101 小时前
Redis-缓存穿透&击穿&雪崩
数据库·redis·缓存
泡泡Java1 小时前
Redis离线安装(内网,源码安装)
数据库·redis·缓存
想做富婆1 小时前
存储过程和自定义函数在银行信贷业务中的应用(oracle)
数据库·存储过程·银行贷款业务
珹洺1 小时前
数据库系统概论(三)数据库系统的三级模式结构
java·运维·服务器·数据库·oracle
不知真不只1 小时前
数据库---sqlite3
数据库
Huooya1 小时前
Spring的基础事务注解@Transactional
数据库·spring·面试