Skip to content

存储与缓存技术

在我看来,缓存其实也是存储技术的一种,但各种工程系统、底层硬件中缓存都无处不在,所以也想好好思考下缓存相关的技术。

关于缓存

有个段子,计算机科学唯二的难题,缓存失效与命名

缓存本身的话其实分为多种,如CPU中的L1、L2、L3缓存,还有我们常听到的 page cache 和 buffer cache,以及日常使用最多的 memcache 与 redis 等,在我看来,缓存的作用主要有两种:

  1. 空间换时间,提升访问速度
  2. 避免所有的流量都打到底层数据库上,直接把系统打穿

虽然缓存的作用看起来简单,但设计合适的缓存系统,其实也不容易,需要考虑到各种异常,比如缓存穿透、缓存雪崩、缓存击穿等各种异常

关于存储

其实我们所说的硬盘、文件系统、关系型数据库,在我看来,其实都是存储,只是抽象的程度不一样。

  1. 硬盘是对最底层硬件的抽象,我们不需要去理解底层的存储,如何用硅来存储数据。
  2. 文件系统是对硬盘读取的抽象,告诉底层硬盘该如何存储与组织数据,并且给上层暴露统一的API
  3. 而关系型数据库本身是对文件系统的抽象,如何按照现实世界软件的设计,去存储与组织数据

有个著名的梗,对于计算机科学而言,没有什么问题是加一层不能解决的。