缓存在系统中的位置
硬件缓存
L1-L2-L3 缓存
硬件缓存通常包含 L1、L2、L3 缓存。
L1 是最小最快的缓存,通常直接集成到 CPU 中。L1 缓存存储经常访问的数据和指令,让 CPU 可以快速从其中获取到数据,而不是从比较慢的内存中获取数据。
L2 缓存稍微大些,但是比 L1 缓存更慢。L2 缓存通常放在 CPU 核心(现代处理器)或者位于一颗独立的芯片(早期处理器)上。
L3 缓存比 L2 缓存更大更慢,被多个 CPU 核心所共享。
TLB 缓存
TLB (Transation lookaside buffer,地址转换后备缓冲器),是 CPU 中用于加速虚拟地址到物理地址转换的专用高速缓存。
工作流程:
- CPU 发起请求:CPU 需要访问某个虚拟地址(如读取数据、指令),先将虚拟地址发送给内存管理单元(MMU)。
- TLB 查找匹配:MMU 先检查 TLB 中是否存在该虚拟地址对应的 “物理地址映射”:
- 命中(TLB Hit):若找到匹配项,直接从 TLB 中取出物理地址,跳过内存查页表的步骤,快速访问物理内存;
- 缺失(TLB Miss):若未找到匹配项,MMU 需要先去物理内存中查询 “页表”,获取对应的物理地址,同时将该映射关系存入 TLB(替换掉不常用的旧项),之后再用物理地址访问内存。
- 结果返回 CPU:物理内存将数据 / 指令返回给 CPU,完成一次访问。
操作系统缓存
页缓存
页缓存由操作系统管理,并存储在主内存中。
页缓存通常被用来在内存中存储最近使用的磁盘块。
当程序请求磁盘块中的数据时,操作系统可以快速从内存中获取数据而不是从磁盘获取数据。
Inode Cache
Inode Cache 可以减少为了获取文件和目录所需的磁盘访问次数。
一次网络请求所用的缓存
客户端
在客户端,浏览器可以缓存 HTTP 响应。
CDN
CDN 通常用来提升静态内容(图片、视频)分发的性能。
首次请求时,CDN 会从源服务器获取资源,并在边缘服务器缓存资源
第二次请求时,CDN 可以直接从缓存中获取数据。
负载均衡
负载均衡可以缓存响应。
Kafka Broker 缓存
Kafka Broker 会将消息缓存到磁盘中,这样消费者可以以它的速率来消费消息。
Redis
ES
全文搜索引擎可以给文档建立索引。
关系型数据库缓存
数据在写入 B 树前,会先被写入到 WAL 日志(Redo Log)中。
Buffer Pool 是一个用于存储查询结果的内存区域。
事务日志(Undo Log)记录了所有对数据库的事务和更新。



















