Redis 底层架构图

我给你画一张清晰、面试级、能直接看懂的 Redis 底层架构图,用文字+结构框图形式,保证你一眼吃透。

Redis 整体底层架构图

复制代码
┌─────────────────────────────────────────────────────────────┐
│                    客户端(Java/Go/Python/CLI)              │
└───────────────────────────┬─────────────────────────────────┘
                            │
                            ▼
┌─────────────────────────────────────────────────────────────┐
│                    网络通信层(Network Layer)              │
│  ┌──────────────┐  ┌───────────────┐  ┌─────────────────┐   │
│  │  Socket 监听 │  │ IO多路复用     │  │ 命令解析&协议    │   │
│  │ (bind/listen)│→ │(epoll/kqueue) │→ │(RESP 协议解析)   │   │
│  └──────────────┘  └───────────────┘  └─────────────────┘   │
└───────────────────────────┬─────────────────────────────────┘
                            │
                            ▼
┌─────────────────────────────────────────────────────────────┐
│                   事件处理器(单线程核心)                  │
│  ┌─────────────────────────────────────────────────────┐   │
│  │                单线程命令执行队列                    │   │
│  │    (读/写/删除/过期/事务/Lua 全部串行执行)        │   │
│  └─────────────────────────────────────────────────────┘   │
└───────────────────────────┬─────────────────────────────────┘
                            │
                            ▼
┌─────────────────────────────────────────────────────────────┐
│                      内存数据核心层                         │
│  ┌─────────────┐  ┌────────────┐  ┌─────────────────────┐   │
│  │  字典 dict  │  │  数据结构  │  │  过期策略 & LRU/LFU │   │
│  │(全局哈希表)  │→ │(SDS/跳表/  │→ │  主动淘汰 + 惰性删除│   │
│  └─────────────┘  │  quicklist)│  └─────────────────────┘   │
│                   └────────────┘                             │
└───────────────────────────┬─────────────────────────────────┘
                            │
                            ▼
┌─────────────────────────────────────────────────────────────┐
│                      持久化模块                             │
│  ┌───────────────┐         ┌───────────────────────┐        │
│  │   RDB 快照    │         │      AOF 日志         │        │
│  │(fork 子进程)│         │(写后日志/重写机制) │        │
│  └───────────────┘         └───────────────────────┘        │
└───────────────────────────┬─────────────────────────────────┘
                            │
                            ▼
┌─────────────────────────────────────────────────────────────┐
│                     高可用 & 集群模块                       │
│  ┌──────────┐  ┌──────────┐  ┌──────────┐  ┌────────────┐   │
│  │ 主从复制 │  │  哨兵    │  │ Redis集群│  │  事务/Lua  │   │
│  │(replication)││(sentinel)││(cluster) ││(单线程原子) │   │
│  └──────────┘  └──────────┘  └──────────┘  └────────────┘   │
└─────────────────────────────────────────────────────────────┘

每层核心作用一句话吃透

  1. 网络层

    IO多路复用(epoll)+ Reactor 模型,一个线程扛万级连接。

  2. 单线程事件循环

    所有命令串行执行,无锁、无竞争、无上下文切换,这是 Redis 快的关键。

  3. 内存数据核心(灵魂)

    • 全局 dict 哈希表:O(1) 查找
    • 底层优化数据结构:SDS、quicklist、跳表、ziplist
    • 过期 key 处理:惰性删除 + 定期删除
  4. 持久化

    • RDB:全量快照,快
    • AOF:增量日志,更安全
      异步/后台执行,不阻塞主线程查询。
  5. 高可用层

    主从、哨兵、集群,解决单点、扩容、故障转移。


最核心的一张小图:Redis 单线程模型

复制代码
客户端请求 → epoll 监听 → 放入队列 → 单线程依次执行 → 返回结果

没有并发,没有锁,纯内存操作 → 极快。

相关推荐
JavaPub-rodert4 分钟前
MongoDB 常用命令和常见问题大全
数据库·mongodb
晚安code21 分钟前
Redis 内存淘汰策略实战:什么时候淘汰、怎么选、怎么防缓存击穿
java·redis·缓存
Dovis(誓平步青云)1 小时前
从Redis指标采集到异常告警:redis_exporter + Prometheus 完整实战
服务器·数据库·人工智能·redis·架构·prometheus·vibe coding
城管不管9 小时前
重生——第十一次面试之挖财一面2026.8.19已OC
java·服务器·jvm·数据库·spring·面试·职场和发展
倔强的石头1069 小时前
向量数据库从相似度检索走向融合数据底座
数据库
今天AI了吗10 小时前
Python 基础语法(一):常量、变量、输入输出与运算符
开发语言·数据库·人工智能·python·sql·深度学习·机器学习
阿里巴巴P8资深技术专家11 小时前
Redis连接工具 —— Redis Manager
redis
CDN36011 小时前
CDN 缓存策略优化实操:出海业务提升缓存命中率,TTL、缓存 Key、刷新配置与踩坑总结
缓存·cdn加速·cdn防护·360cdn
lilian23312 小时前
Harmony os 技术实战|拼豆制图27:用单字符编码承载 50 张 70×70 图纸
前端·数据库·华为·harmonyos
皮卡丘不断更12 小时前
手机优先的 Personal Ledger:把账目、学习和复盘放到同一个入口
数据库·sqlite·fastapi·开源项目·个人效率