购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.1 什么是缓存?

缓存: 存储在计算机上的一个原始数据复制集,以便于访问。

——维基百科

缓存是系统快速响应中的一种关键技术,是一组被保存起来以备将来使用的东西,介于应用开发和系统开发之间,是产品经理们经常顾及不到的地方,也是技术架构设计中的非功能性约束。

因为“缓存为王”,很多技术都打着缓存的旗号,所以谈起缓存往往似是而非。

例如,CPU的缓存,是指位于CPU与内存之间的临时存储器,容量比内存小得多但交换速度却比内存要快得多。由于CPU的运算速度要比内存读写速度快很多,CPU总有等待数据的时候,而高速缓存则解决了CPU运算速度与内存读写速度不匹配的矛盾。缓存中的数据是内存中的一部分,且这部分是短时间内CPU即将访问的,当CPU调用数据时,先从缓存中调用,从而加快读取速度。而且,CPU是有多级缓存的,有时候也称为几级流水。

再例如,Linux操作系统中的文件缓存如图1-1所示。

我们平时在编程的时候,接触到的都是虚拟地址而不是真实的物理地址,这是虚拟内存的主要功能之一。假如请求一个页的地址,需要将页的虚拟地址转化为页的物理地址。页表(page table)和内存管理单元(MMU)就负责将页的虚拟地址映射到物理地址。页表负责记录哪些是物理页,哪些是虚拟页,以及这些页的页表条目(PTE)。而MMU是一个物理硬件,MMU负责进行虚拟地址到物理地址的翻译,翻译过程中需要从页表获取页的PTE,MMU也会使用翻译后备缓存器(TLB)的缓存页号。可见,在操作系统层面都有缓存。

图1-1 Linux文件系统中的缓存

因此,缓存一词与语境有着紧密的关系,缓存在不同场景有着不同的意义,采用的技术手段也是不同的。不涉及操作系统和硬件的缓存,根据在软件系统中所处位置的不同,缓存大体可以分为三类:

·客户端缓存;

·服务端缓存;

·网络中的缓存。

根据规模和部署方式缓存也可以分为:

·单体缓存;

·缓存集群;

·分布式缓存。

可见,在软件系统中缓存几乎无处不在,这或许就是缓存为王的一个原因吧。 QymaWGg++qLDAh7ufhoPfD0+o/of3K2b79gQC/sTVDzmzoS9nHuje1hvDuNODw1g

点击中间区域
呼出菜单
上一章
目录
下一章
×

打开