首页 > 其他分享 >Cache与Buffer的区别

Cache与Buffer的区别

时间:2023-02-02 13:22:23浏览次数:38  
标签:cache 读取 区别 Buffer Cache 写入 write buffer 缓存

转至:https://blog.csdn.net/lijingjingchn/article/details/114540187

1. 前言

首先cache是缓存,buffer是缓冲,虽然翻译有那么一个字的不同,但这不是重点。

个人认为他们最直观的区别在于cache是随机访问,buffer往往是顺序访问。虽然这样说并没有直击本质,不过我们可以待分析完毕之后再来讨论真正的本质。为了说明这个问题,让我将他们分开来说:read cache(读缓存),read buffer(读缓冲),write cache(写缓存),write buffer(写缓冲)。

2. read cacheread buffer

无论缓存还是缓冲,其实本质上解决的都是读写速度不匹配的问题,从这个角度,他们非常相似。

  1. read cache:读缓存跟读缓冲的最大区别在于,读缓存的目标数据是始终有效的,如果不从缓存中读取,也可以直接读取实际数据,只不过实际数据读取会慢一些,当这个数据在缓存中,读取速度将会变快。当一个缓存中的数据被多次读取,实际上就减少了该数据从慢速设备中读取的量,这就存在某种算法去选择「什么数据需要保存在cache中」,因为尽可能多的让cache命中能提高性能。先进入cache的数据不一定先被读取,甚至说进入cache的数据有可能永远不被读取就被清除了,因此read cache呈现出非常明显的随机访问特性。

  2. read buffer:而读缓冲buffer的数据则不是始终有效,而是实时生成的数据流,每当buffer满或者主动flush buffer的时候触发一次读取,对于小数据,这样可以减少读取次数,对于大数据,这可以控制单次读取的数据量。换句话说,无论数据量大还是小,单次读取数据量都按照buffer尺寸进行归一化了。通常来说,先喂给buffer的数据一定会先被读取,所有buffer的数据几乎一定会被读取,这是很明显的顺序访问特性。

从上面的情况看到,读缓存以及读缓冲很明确的反应出了我所说的表面特性。而其本质特性在于cache的目标是减少读取总量每次cache命中都减小了读取总量。而buffer并不能减少读取总量,只能规整化每次读取数据的尺寸大小。

3. write cachewrite buffer

要说到write cache跟write buffer?我们先说write buffer

  1. write buffer: write buffer是read buffer的对应,对于小数据的写入,它需要填满write buffer再进行一次写入,对于大数据,大数据会被分割到buffer尺寸的大小分批写入。因此,write buffer 的用处在于使得每次写入的数据量相对固定。如果一次写入4k对某个设备来说效率最高,那么把buffer定为4k,小数据积攒到4k写一次,大数据分割到每个碎片4k多次写入,这样就是write buffer的用处。
  2. write cache:最后我们来说write cache。所谓write cache,就是要设法减少写入次数。也就是说,如果某些数据需要产生多次写入,那么使用cache就可以只将最终数据写入,导致最终写入数据减少。

在实际应用中,我们有时会使用到write buffer跟write cache的合体形态。buffer本身需要规整尺寸,与此同时,buffer还允许多次随机写入,使得多次写入的数据只用写入最后一次,这属于cache的特性。BT软件使用的写缓存往往具有类似特性,因而这种形态它同时既是buffer又是cache。正因为在写入场合buffer跟cache没有那么明显的分界,所以才会有产生buffer跟cache究竟有啥区别的疑问。

4. 总结

  • 在read(读取)的场合,cache通常被用于减少重复读取数据时的开销,而buffer则用于规整化每次读取数据的尺寸,在读取场合两者用途差别很大。
  • 在write(写入)的场合,两者功能依然没变,但由于cache跟buffer的功能在写入场合可以融合使用,所以两者可以被混淆,写入缓冲跟写入缓存往往会同时担当规整化写入尺寸以及减少写入次数的功能,所以两者有时会被混淆,但这只是个名称问题,没有原则性关系。

标签:cache,读取,区别,Buffer,Cache,写入,write,buffer,缓存
From: https://www.cnblogs.com/my-first-blog-lgz/p/17085703.html

相关文章

  • 货代、海运操作、船务操作的区别 箱讯科技解析
    大型的货代公司操作流程会细分,每个操作都有专人,小货代公司一个人打包以上业务。某些大型的生产厂家也会有海运和船务操作的。货代是货物代理(freightforwardingagent)的简称......
  • type和interface的区别
    type和interface的相同点:都是用来定义对象或函数的形状;它俩都支持继承,并且可以相互继承。具体形式稍有差别。interface是通过extends实现的,type是通过&实现的。type......
  • js-设计模式-行为型-策略模式与状态模式的区别
    在js行为型设计模式中。策略模式与状态模式大同小异。下面,来说说它的区别。相同点:都会使用行为函数封装行为,通过委托来分发行为。不同点:策略模式中的行为函数会更加割裂,......
  • 面试题:let const var 的区别 及数据类型
    1.letconstvar的区别答。1var有变量提升,letconst没有2var没有作用域,但是letconst有作用域3varlet声明时可以没有值,但是const声明时必须含有值4var声明......
  • 数据仓库、数据湖、湖仓一体,究竟有什么区别
    数据,已经成为了企业的生命线与核心资产,数据管理和数据分析成为非常重要的应用领域。出于对数据管理领域的关注,不同行业也逐步提升了对数据存储、数据治理及数据分析能力的......
  • 77、缓存---SpringCache---整合&体验@Cacheable
    1、导入依赖<!--缓存--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-cache<......
  • RedisTemplate和StringRedisTemplate区别
    RedisTemplate和StringRedisTemplate区别StringRedisTemplate继承RedisTemplate主要区别是使用的序列化类不同StringRedisTemplate的API假定所有的数据类型都是字符......
  • raid 0 与raid 1的区别?
    区别共有三点:1、两者的概念不同:RAID 0:是多磁盘数据分组同步写读。RAID1:是多磁盘同数据同步写读。2、两者的安全性不同:RAID0:无数据备份功能,安全性差。RAID1:盘间是......
  • 什么是公网IP?公网IP和内网IP的区别
    什么是IP地址IP地址,全称(InternetProtocolAddress)翻译成中文就是指互联网协议地址,所有的计算机分配一个统一格式的、唯一的虚拟地址编号。就像每个人都有一个身份证一样,IP......
  • 什么是公网IP?公网IP和内网IP的区别
    什么是IP地址IP地址,全称(InternetProtocolAddress)翻译成中文就是指互联网协议地址,所有的计算机分配一个统一格式的、唯一的虚拟地址编号。就像每个人都有一个身份证一样,I......