博客
关于我
Redis主从复制原理总结
阅读量:437 次
发布时间:2019-03-06

本文共 1099 字,大约阅读时间需要 3 分钟。

Redis 主从复制概述及注意事项

Redis 主从复制是一种高效的数据同步机制,旨在通过分担读写压力,提升系统的性能和可用性。本文将详细介绍 Redis 主从复制的工作原理及其相关注意事项。


全量同步与增量同步

Redis 主从复制分为两种模式:全量同步和增量同步。

全量同步

全量同步发生在从服务器首次连接到主服务器或因网络故障导致数据丢失时。具体过程如下:

  • 从服务器发送 SYNC 命令,主服务器启动 BGSAVE 生成 RDB 文件并记录后续写操作。
  • 主服务器完成 BGSAVE 后,将 RDB 文件发送给所有从服务器。
  • 从服务器加载 RDB 文件并清空旧数据。
  • 主服务器将 BGSAVE 期间的写操作缓冲发送给从服务器。
  • 从服务器完成加载后,主从服务器建立数据一致性。
  • 增量同步

    全量同步完成后,主从服务器进入增量同步模式。具体过程如下:

    • 主服务器执行写操作时,将命令直接发送给所有从服务器。
    • 从服务器接收命令并执行,确保数据与主服务器一致。

    Redis 主从同步策略

    同步顺序

    • 新连接的从服务器首先进行全量同步。
    • 全量同步完成后,进入增量同步模式。-Slave 可以在任何时候触发全量同步。

    注意事项

    • 多个从服务器断线时,需确保只有一台从服务器重启以避免主服务器 IO 瓶塞。
    • 在磁盘空间有限的情况下,可采用无盘复制(通过网络直接传输 RDB 文件)。

    Redis 主从复制注意事项

  • 主服务器持久化

    • 建议开启持久化以避免数据丢失。
    • 若不持久化,需禁止主服务器自动重启。
  • 密码配置

    • 若主服务器设置密码,需在从服务器配置中添加相应密码,否则复制失败。
  • 过期键处理

    • 主服务器负责发送删除命令,Slave 本地处理过期键。
  • 主从结构设计-Slave 不支持写操作,建议通过配置允许Slave 写操作,但需谨慎处理潜在影响。


  • 无磁盘复制

    Redis 从 2.8.18 版本起支持无磁盘复制。具体配置如下:

    • 使用 repl-diskless-sync 参数启动无磁盘复制。
    • 通过配置延迟时间 repl-diskless-delay,优化从服务器连接效果。

    配置建议

    从服务器配置

    slaveof 
    <主服务器ip>
    <主服务器端口>

    替换为实际主服务器 IP 和端口,例如:

    slaveof 192.168.1.1 6379

    无磁盘复制

    在 redis.conf 中启用无磁盘复制:

    replication-diskless-sync enabledreplication-diskless-sync-delay 5

    通过以上配置和注意事项,Redis 主从复制能够高效、可靠地管理数据同步,提升系统性能和可用性。

    转载地址:http://cqxyz.baihongyu.com/

    你可能感兴趣的文章
    Python:如果DataFrames之间的其他值匹配,则对DataFrame中的值求和
    查看>>
    Python:字典思维
    查看>>
    Python:将 HEX 字符串转换为字节
    查看>>
    Python:将列表与范围列表合并
    查看>>
    Python:将列表列表初始化为一定大小,
    查看>>
    Python:带有生成器的给定集合的幂集
    查看>>
    Python:按字符的位置拆分字符串
    查看>>
    Python:替换嵌套字典中的值
    查看>>
    Python:爬取数据出现response.status_code为403解决方法
    查看>>
    Python:爬取数据出现response.status_code为418解决方法
    查看>>
    Python:生成“元组集“;来自“元组列表“;不考虑顺序
    查看>>
    Python:生成具有趋势的随机时间序列数据(例如周期性、指数衰减等)
    查看>>
    Python:用渐进式数字重命名列表中的重复项而不对列表进行排序
    查看>>
    Python:矩形参数无效
    查看>>
    Python:语法进阶
    查看>>
    Python:调用复制函数时调用 Python 对象时超出了最大递归深度
    查看>>
    Python:这两个 import 语句有什么区别?
    查看>>
    Python:通过串口从 Velleman k8090 读取数据
    查看>>
    python:遍历具有列表值的字典
    查看>>
    Python:降低精度 pandas 时间戳数据帧
    查看>>