惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

The Hacker News
The Hacker News
H
Hackread – Cybersecurity News, Data Breaches, AI and More
小众软件
小众软件
云风的 BLOG
云风的 BLOG
Martin Fowler
Martin Fowler
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
B
Blog RSS Feed
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
博客园 - 聂微东
L
LangChain Blog
博客园 - 司徒正美
腾讯CDC
C
Cybersecurity and Infrastructure Security Agency CISA
C
Cisco Blogs
M
MIT News - Artificial intelligence
Y
Y Combinator Blog
S
Schneier on Security
T
Tailwind CSS Blog
S
Securelist
P
Proofpoint News Feed
A
Arctic Wolf
有赞技术团队
有赞技术团队
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
P
Privacy & Cybersecurity Law Blog
爱范儿
爱范儿
G
GRAHAM CLULEY
F
Full Disclosure
T
Threat Research - Cisco Blogs
Hugging Face - Blog
Hugging Face - Blog
T
Tor Project blog
T
Threatpost
月光博客
月光博客
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
C
CXSECURITY Database RSS Feed - CXSecurity.com
AWS News Blog
AWS News Blog
C
CERT Recently Published Vulnerability Notes
Apple Machine Learning Research
Apple Machine Learning Research
博客园_首页
Simon Willison's Weblog
Simon Willison's Weblog
Microsoft Security Blog
Microsoft Security Blog
雷峰网
雷峰网
I
Intezer
GbyAI
GbyAI
T
The Exploit Database - CXSecurity.com
L
LINUX DO - 热门话题
J
Java Code Geeks
I
InfoQ
Stack Overflow Blog
Stack Overflow Blog
V
Visual Studio Blog
罗磊的独立博客

不止平凡

Token 省钱诀窍速查 梁山上的政治 记一次通过ssh密钥无法推送代码问题排查 进程、线程、协程 系统内核和编程接口 操作系统笔记 QQ里的故事 撇开和捺住 追逐与回首 我与文学的缘分 心如明镜台 你真的看懂月光宝盒了吗
Redis学习笔记
知平 · 2025-07-23 · via 不止平凡
By 知平 in 手札

Redis 持久化、主从复制、哨兵、分片集群,每个概念单独来看都很容易理解,但它们之间存在哪些联系?Redis为什么会演化出这几种架构模式?这篇文章告诉你答案。

怎么做数据持久化

1、AOF——子线程将内存数据进行落盘(对数据完整性支持较好)

  • appendfsync always: 主线程同步fsync
  • appendfsync no: 由OS fsync
  • appendfsync everysec: 定期1s执行fsync

AOF 持续变大,恢复时间变长怎么办?

  • 定期rewrite,合并AOF(只需保留最近的状态)

2、RDB定时数据快照(丢失数据不敏感)

  • 持久化文件小(二进制、压缩)
  • 写磁盘频率低

3、混合持久化——综合AOD和RDB

  • 定时快照
  • 2次快照的间隔使用AOF持久化

主从复制

master + 多个 slave 模式

1、master读写,slave只读

2、master 实时同步到slave

3、故障时slave提升为主

哨兵模式

引入观察者角色(哨兵),将slave提升为master的过程自动化。

1、哨兵定期检查master状态

2、master正常应答,继续观测

3、发现master异常,开始发起主从切换

哨兵和master之间网络故障引起误判怎么办?

  • 在多个节点部署多个哨兵
  • 哨兵监测到master异常数量大于阈值,才判定为故障

由哪个哨兵发起切换?

  • 哨兵投票

1个master扛不住怎么办?

分片集群

1、客户端根据key实现路由规则

2、proxy模式

3、官方集群方案

  • 无需部署哨兵,节点之间通过gossip协议相互探测健康切换
  • 官方提供了sdk用于路由规则,节点删除和增加适配
  • 如果老业务升级困难,还可以自己增加一层proxy

总结

总结一下,我们是如何从 0 到 1,再从 1 到 N 构建一个稳定、高性能的 Redis 集群的,从这之中你可以清晰地看到 Redis 架构演进的整个过程。

  1. 数据怕丢失 -> 持久化(RDB/AOF)
  2. 恢复时间久 -> 主从副本(副本随时可切)
  3. 故障手动切换慢 -> 哨兵集群(自动切换)
  4. 读存在压力 -> 扩容副本(读写分离)
  5. 写存在压力/容量瓶颈 -> 分片集群
  6. 分片集群社区方案 -> Twemproxy、Codis(Redis 节点之间无通信,需要部署哨兵,可横向扩容)
  7. 分片集群官方方案 -> Redis Cluster (Redis 节点之间 Gossip 协议,无需部署哨兵,可横向扩容)
  8. 业务侧升级困难 -> Proxy + Redis Cluster(不侵入业务侧)

至此,我们的 Redis 集群才得以长期稳定、高性能的为我们的业务提供服务。