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

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

相关推荐
PaperData6 小时前
1985-2025年全国区县专利申请与授权面板数据
数据库
snpgroupcn6 小时前
大数据量SAP迁移方案:系统越大,越不能硬搬
数据库·sap
Flynt7 小时前
Redis Cluster主节点挂了,为什么"高可用"还全员掉线?我把三次kill的记录翻出来了
数据库·redis·分布式
笃行3507 小时前
KingbaseES 数据加密全解:从 SSL 到全密态
数据库
Ivanqhz7 小时前
激活函数在 Transformer 中的作用及各种变体简述
java·linux·数据库·人工智能·深度学习
java1234_小锋8 小时前
【技术专题】Mysql8 数据库 - Mysql8 数据类型简介
数据库·mysql
知行EDI9 小时前
知行之桥 MaBang 端口使用指南——Create Order 订单创建篇
java·服务器·数据库
成旭先生9 小时前
【2026】企业信息模糊查询 API 实战:名称、注册号、统一社会信用代码、企业类型与法人一次查全
服务器·数据库·数据服务
JosieBook9 小时前
【数据库】MySQL 实战精通系列 · 第10篇:分库分表与分布式事务实战
数据库·分布式·mysql
写后端的胖头鱼9 小时前
一文详解Cache Aside(旁路缓存模式)
redis·缓存·延迟双删·缓存一致