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 监听 → 放入队列 → 单线程依次执行 → 返回结果

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

相关推荐
DIY源码阁3 小时前
JavaSwing宿舍管理系统 - MySQL版
java·数据库·mysql·eclipse
cfm_29143 小时前
MySQL8.0 InnoDB Cluster
数据库·mysql
kTR2hD1qb3 小时前
Claude Code Skill的介绍与使用
java·前端·数据库·人工智能
一 乐3 小时前
汽车租赁|基于SprinBoot+vue的汽车租赁管理系统(源码+数据库+文档)
数据库·vue.js·spring boot·汽车·论文·毕设·汽车租赁管理系统
zandy10114 小时前
衡石科技 NL2Metrics 技术深度解析(2026):ChatBI 准确度破局的关键路径
数据库·科技·oracle
Elastic 中国社区官方博客4 小时前
Elasticsearch 如何通过 synthetic _id 和 Bloom filters 将时序存储降低 34%
大数据·数据库·elasticsearch·搜索引擎·serverless·全文检索·时序数据库
better_liang4 小时前
每日Java面试场景题知识点之-如何设计分布式锁
java·redis·zookeeper·面试·分布式锁
一只鹿鹿鹿4 小时前
信息化项目管理规范(参考Word文件)
java·大数据·运维·开发语言·数据库