Cache(缓存)和 Buffer(缓冲),主要区别是什么?
来源:互联网 发布:胸卡设计软件 编辑:程序博客网 时间:2024/05/22 00:09
转载地址:https://www.zhihu.com/question/26190832
俩英文单词,不先看看本义吗?虽然都是抽象单词,但在各个地方都有具象的应用。
Buffer常见的是这个:<img src="https://pic4.zhimg.com/v2-b7b66d782898210d7bd22439e9238df3_b.jpg" data-rawwidth="512" data-rawheight="384" class="origin_image zh-lightbox-thumb" width="512" data-original="https://pic4.zhimg.com/v2-b7b66d782898210d7bd22439e9238df3_r.jpg">
(来源:train stop buffer bumper)
对,就是铁道端头那个巨大的弹簧一类的东西。作用是万一车没停住,撞弹簧上减速慢,危险小一些。叫缓冲。
<img src="https://pic3.zhimg.com/v2-15f852f7456fc701c936075d9174f8ba_b.jpg" data-rawwidth="1024" data-rawheight="768" class="origin_image zh-lightbox-thumb" width="1024" data-original="https://pic3.zhimg.com/v2-15f852f7456fc701c936075d9174f8ba_r.jpg">(来源:
(来源:https://upload.wikimedia.org/wikipedia/commons/6/68/Bear_caches.jpg)
没错,就是一种保管箱。看到右边那个被锈掉的Food Cache没?这是部署在森林里的存应急物资的保管箱。功能是把你需要用的东西放在更容易拿到的地方。虽然常用准确翻译叫缓存,但个人以为意思表达的不对,丢了一半的功能。台湾的翻译更好,叫快取。
相信看完这些应该不用我说区别了?
哎呀还是卖弄一下吧。
简单说,Buffer的核心作用是用来缓冲,缓和冲击。比如你每秒要写100次硬盘,对系统冲击很大,浪费了大量时间在忙着处理开始写和结束写这两件事嘛。用个buffer暂存起来,变成每10秒写一次硬盘,对系统的冲击就很小,写入效率高了,日子过得爽了。极大缓和了冲击。
Cache的核心作用是加快取用的速度。比如你一个很复杂的计算做完了,下次还要用结果,就把结果放手边一个好拿的地方存着,下次不用再算了。加快了数据取用的速度。
所以,如果你注意关心过存储系统的话,你会发现硬盘的读写缓冲/缓存名称是不一样的,叫write-buffer和read-cache。很明显地说出了两者的区别。
当然很多时候宏观上说两者可能是混用的。比如实际上memcached很多人就是拿来读写都用的。不少时候Non-SQL数据库也是。严格来说,CPU里的L2和L3 Cache也都是读写兼用——因为你没法简单地定义CPU用它们的方法是读还是写。硬盘里也是个典型例子,buffer和cache都在一块空间上,到底是buffer还是cache?
不过仔细想一下,你说拿cache做buffer用行不行?当然行,只要能控制cache淘汰逻辑就没有任何问题。那么拿buffer做cache用呢?貌似在很特殊的情况下,能确定访问顺序的时候,也是可以的。简单想一下就明白——buffer根据定义,需要随机存储吗?一般是不需要的。但cache一定要。所以大多数时候用cache代替buffer可以,反之就比较局限。这也是技术上说cache和buffer的关键区别。
——————
补充1:不要误解Buffer就是用来写的,Cache就是用来读的。读可以用Buffer吗?当然可以,比如你想一批一批地处理读取而非有啥处理啥的时候,就可以用读buffer。写当然也可以用cache,比如你的写入有很高的随机性的时候。具体什么场景用Buffer什么场景用Cache要根据场景的具体需要决定。
- Cache(缓存)和 Buffer(缓冲),主要区别是什么?
- Buffer缓冲和Cache缓存的区别
- Buffer和cache的区别是什么?
- 我对 缓冲(buffer)和 缓存(cache)的理解
- 缓冲Buffer,缓存Cache,池Pool
- Linux Free命令与cache和buffer的主要区别
- Cache 和 Buffer 区别
- 概念区分:BUFFER缓冲区 和 CACHE缓存区 的区别
- buffer和cache的区别(转)
- buffer和cache区别(free)
- buffer cache和page cache的区别?Buffer,Cache区别
- buffer cache与page cache的主要区别
- Buffer和Cache的区别
- cache 和 buffer的区别
- cache 和 buffer的区别
- Buffer和Cache的区别
- buffer 和 cache 的区别
- Buffer和Cache的区别
- 记录前端学习的一些要点
- 字符串的空格更换(也可进行任意字符更换)
- 搭建codis
- mybatis连接数据库
- centos7使用yum安装mariaDB(开源MySQL)无法启动的解决办法
- Cache(缓存)和 Buffer(缓冲),主要区别是什么?
- Javascript中call的使用
- Windows下python+django环境搭建
- 非静态内部类Handler类引起内存泄露
- java.lang.ClassNotFoundException: org.openxmlformats.schemas.wordprocessingml.x2006.main.impl.CTPIm
- [最大流] 计划安排
- Qt Designer 5.6.2无法打开
- Node.js v6.10.1在webStrom里配置less转css步骤
- Android 内存优化实践与总结