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

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

相关推荐
用户3169353811832 天前
Java连接Redis
redis
倔强的石头_2 天前
《Kingbase护城河》——数据库存储空间全景探测与精细化瘦身实战
数据库
冬奇Lab3 天前
每日一个开源项目(第134篇):Zvec - 阿里开源的嵌入式向量数据库,向量搜索界的 SQLite
数据库·人工智能·llm
ClouGence3 天前
Oracle CDC 架构优化:从主库直连到 DataGuard 备库同步
数据库·后端·oracle
无响应de神3 天前
三、用户与权限管理
数据库·mysql
小小工匠4 天前
Redis - 事务机制:能实现 ACID 属性吗
数据结构·redis·性能优化·并发·持久化
麦聪聊数据4 天前
数据服务化时代:企业数据能力输出的核心路径
数据库
shushangyun_4 天前
2026年快消品B2B系统推荐:支持终端门店订货、促销政策自动化的工具?
java·运维·网络·数据库·人工智能·spring·自动化
DARLING Zero two♡4 天前
【MySQL数据库】数据类型与表约束
数据库·mysql
ofoxcoding4 天前
在AI API聚合平台配置DeepSeek V3.2提示词缓存实战:快速接入与成本优化指南
人工智能·spring·缓存·ai