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

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

相关推荐
李纲明4 分钟前
WordPress 后台登录马上被踢回登录页:Cookie 域、HTTPS、盐值和页面缓存怎么查
运维·缓存·https·php·wordpress·cookie
程序员塔塔喵15 分钟前
【MySQL篇|第一篇】索引失效的情况
数据库·mysql·索引失效
北京青蓝智慧马老师41 分钟前
比外部黑客更难防的,是那个有权限的自己人(3 个脱敏复盘)
大数据·数据库·人工智能
笃行3501 小时前
拆一台数据集成产品:KFS 的骨架、肌肉和神经
数据库
4SAPI1 小时前
搭建 AI 数据分析工具大模型 API 选型指南
数据库·人工智能·架构·php·1024程序员节
用户094248568032 小时前
第7章:Redis有序集合 ZSet 实战:排行榜与延时任务
redis·架构·源码
码士集团小青3 小时前
面霸篇:高频 Java 基础问题(核心卷一)
linux·服务器·数据库·redis·缓存·1024程序员节
2301_32241428043 小时前
springboot农产品交易平台的设计与实现08055-计算机毕设 原创(免费领源码+部署教程+开发环境)
java·spring boot·redis·mysql·tomcat·maven·mybatis
乐茵lin3 小时前
Redis 持久化机制详解:RDB 与 AOF
redis·bootstrap·mybatis
LMT流氓兔4 小时前
第五单元——第十二课:把脚本整理成项目
java·数据库·python·langchain·1024程序员节