一文讲解Redis中的主从复制

主从复制是指将一台 Redis 服务器的数据,复制到其他的 Redis 服务器。

前者称为主节点 master,后者称为从节点slave。且数据的复制是单向的,只能由主节点到从节点。

三分恶面渣逆袭:Redis主从复制简图

在 Redis 主从架构中,主节点负责处理所有的写操作,并将这些操作异步复制到从节点。从节点主要用于读取操作,以分担主节点的压力和提高读性能。

主从复制主要的作用是什么?

①、数据冗余: 主从复制实现了数据的热备份,是持久化之外的一种数据冗余方式。

②、故障恢复: 如果主节点挂掉了,可以将一个从节点提升为主节点,从而实现故障的快速恢复。

通常会使用 Sentinel 哨兵来实现自动故障转移,当主节点挂掉时,Sentinel 会自动将一个从节点升级为主节点,保证系统的可用性。

复制代码
# sentinel.conf

port 26379
sentinel monitor mymaster 192.168.1.1 6379 2
sentinel down-after-milliseconds mymaster 5000
sentinel failover-timeout mymaster 60000
sentinel parallel-syncs mymaster 1

假如是从节点挂掉了,主节点不受影响,但应该尽快修复并重启挂掉的从节点,使其重新加入集群并从主节点同步数据。

③、负载均衡: 在主从复制的基础上,配合读写分离,可以由主节点提供写服务,由从节点提供读服务 (即写 Redis 时连接主节点,读 Redis 时连接从节点),分担服务器负载。尤其是在写少读多的场景下,通过多个从节点分担读负载,可以大大提高 Redis 服务器的并发量。

④、高可用基石: 除了上述作用以外,主从复制还是哨兵和集群能够实施的 基础

主从复制出现数据不一致怎么办?

Redis 的主从复制是异步进行的,这意味着主节点在执行完写操作后,会立即返回给客户端,而不是等待从节点完成数据同步。

在主节点将数据同步到从节点的过程中,可能会出现网络延迟或中断,从而导致从节点的数据滞后于主节点。

为了解决数据不一致的问题,应该尽量保证主从节点之间的网络连接状况良好,比如说避免在不同机房之间部署主从节点,以减少网络延迟。但可能会带来新的问题,就是整个机房都挂掉的情况。

此外,Redis 本身也提供了一些机制来解决数据不一致的问题,比如说通过 Redis 的 INFO replication 命令监控主从节点的复制进度,及时发现和处理复制延迟。

具体做法是获取主节点的 master_repl_offset 和从节点的 slave_repl_offset,计算两者的差值。如果差值超过预设的阈值,采取措施(如停止从节点的数据读取)以减少读到不一致数据的情况。

极客时间:Redis 核心技术与实战

Redis解决单点故障主要靠什么?

主从复制,当主节点发生故障时,可以通过手动或自动方式将某个从节点提升为新的主节点,继续对外提供服务,从而避免单点故障。

Redis 的哨兵机制(Sentinel)可以实现自动化的故障转移,当主节点宕机时,哨兵会自动将一个从节点升级为新的主节点。

另外,集群模式下,当某个节点发生故障时,Redis Cluster 会自动将请求路由到其他节点,并通过从节点进行故障恢复。

相关推荐
m0_46652529几秒前
绿盟科技风云卫AI安全能力平台成果重磅发布
大数据·数据库·人工智能·安全
爱学习的阿磊37 分钟前
使用Fabric自动化你的部署流程
jvm·数据库·python
摇滚侠41 分钟前
阿里云安装的 Redis 在什么位置,如何找到 Redis 的安装位置
redis·阿里云·云计算
枷锁—sha43 分钟前
【SRC】SQL注入快速判定与应对策略(一)
网络·数据库·sql·安全·网络安全·系统安全
惜分飞1 小时前
ORA-600 kcratr_nab_less_than_odr和ORA-600 4193故障处理--惜分飞
数据库·oracle
chian-ocean1 小时前
CANN 生态进阶:利用 `profiling-tools` 优化模型性能
数据库·mysql
m0_550024631 小时前
持续集成/持续部署(CI/CD) for Python
jvm·数据库·python
AC赳赳老秦1 小时前
代码生成超越 GPT-4:DeepSeek-V4 编程任务实战与 2026 开发者效率提升指南
数据库·数据仓库·人工智能·科技·rabbitmq·memcache·deepseek
啦啦啦_99991 小时前
Redis-2-queryFormat()方法
数据库·redis·缓存
玄同7652 小时前
SQLite + LLM:大模型应用落地的轻量级数据存储方案
jvm·数据库·人工智能·python·语言模型·sqlite·知识图谱