聊聊 Redis 的高可用

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

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

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

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

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

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

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

    • 纵向扩展(scale up):提升单个实例硬件资源。
    • 横向扩展(scale out):增加实例数,分摊数据。
总结
  • 高可用性:数据尽量不丢失,服务尽可能可用。
  • 数据持久化:AOF 和 RDB 保证数据安全。
  • 多节点:提高服务吞吐量和容量。
  • 读写分离:增加 Redis 的读负载能力。
  • 哨兵模式:实现故障自动转移,适用于业务规模扩展。
  • Redis Cluster:解决大数据量存储问题,便于横向扩展。
相关推荐
老男孩游戏时光18 分钟前
# Redis分布式锁三种实现方案,踩坑记录
redis
数据工匠老o22 分钟前
一张 5 亿行的表按月分区后,清理历史数据从几小时变成了几秒
数据库·sql
hwscom44 分钟前
几分钟开防护,SQL和XSS注入全被护卫神挡住
数据库·sql·xss
石小千1 小时前
Redis开启ACL认证
数据库·redis·缓存
东风微鸣1 小时前
把 Tailscale 接进 Prometheus 监控
java·数据库·prometheus
wno7041 小时前
MYSQL 常用合并函数
android·数据库·mysql
东风微鸣1 小时前
一次断电引发的血案:Ubuntu 26.04 升级中断后的完整救援实录
数据库·ubuntu·postgresql
Vitaliy Kostrov(柯维远)1 小时前
谁来承担额外工作?CDN 参与者如何协商资源
nginx·缓存·系统架构·开源·cdn
大侠归来1 小时前
事务能回滚吗?Pipeline 算事务吗?
java·数据库·oracle
临床数据科学和人工智能兴趣组2 小时前
字符串转换为句子风格
大数据·数据库·人工智能·r语言·r语言-4.2.1