缓冲与缓存的区别



Overview



缓冲 (Buffer)

buffer - 缓冲(缓冲区): 

  • 写缓冲
  • 将数据临时存储到内存的过程 -- 写(缓冲)内存
  • 在数据准备存储到磁盘中之前, 先放到内存中进行缓冲

缓冲区是一块特定的内存区域。开辟缓冲区的目的是通过缓解应用程序上下层之间的性能差异,提高系统的性能。在日常生活中,缓冲的一个典型应用是漏斗。

缓冲最常用的场景就是提高 I/O 的速度。


缓存 (Cache)

cache - 缓存(缓存区): 

  • 读缓存
  • 将数据从内存中进行读取的过程
  • 数据已经存储到磁盘中之后, 再把数据转存到内存中
  • 缓存的主要作用是暂存数据处理结果,并提供下次访问使用。


最简单的缓存可以直接使用 HashMap 实现。当然,这样做会遇到很多问题,比如,何时清理无效的数据;如何防止缓存数据过多而导致内存溢出等。一个稍好的替代方案是直接使用 WeakHashMap, 它使用弱引用维护一张哈希表,从而避免了潜在的内存溢出问题。


企业案例


大型企业存取数据的方案(高并发)

存储数据 -- 先存储到内存(缓冲)中 -- 再存储(定时定量)到磁盘中

读取数据 -- 将磁盘数据读到内存(缓存)中 -- 再到内存中读取


中小型企业存取数据的方案(低并发)

存储数据 -- 直接存储到磁盘中

读取数据 -- 将磁盘数据读到内存(缓存)中 -- 再到内存中读取