当前位置: 首页 > 原理解释

cache缓存原理-缓存原理概述

缓存里到底装了多少“垃圾” 想象你刚打开一个装满糖果的大箱子,为了省工夫,你顺手往里面塞了一顿零食。
这时候箱子突然裂开,漏出了一局部零食,但你手里的箱子没坏,只是变空了。
这就挺像计算机的 Cache。它本质上就是一个超大的、带锁的中间仓。
要是刚刚塞进去的糖被老鼠偷偷偷光了,你手里的箱子还亮着,但里面的东西就少了一局部。
这就是缓存的“不持久性”,它更像是一个临时的、好办变空的临时仓库,而不是你房间墙上一辈子挂着的装饰画。 在这个大箱子里,平时塞进去的往往是正经的、珍贵的东西,比如刚做好的热汤、刚切好的新鲜水果。
这些是“热数据”,归于上下文相关的东西,比如你正在查的那篇文档、你手边正在用的那个表格。
这些玩意儿在 Cache 里忙活半天,说走就走,走的时候还得把原来的东西腾出来让新内容进去,故此它们活不过两分钟。
要是数据好了吃,你就得把它们从 Cache 里拿出来放桌子上;要是数据坏了,你就得赶紧再塞回 Cache 去,哪怕略微心疼那一点点空间。 而在 Cache 的边缘地带,藏着那些“假哥们儿”。它们看起来挺大挺亮,实际上是个个空瓶子。
这些瓶子专门用来装那些“冷数据”,也就是那些你根本懒得关心、要么一辈子不会用到的旧消息、历史新闻、后台日志这些。它们平时是空的,一旦有了新内容,就瞬间填满,然后立马被扔出缓存,留在真正的硬盘里慢慢腐烂。出于不管它们里面装的是啥,根本就是个空瓶子,故此它们的存有只是为了占个位置,省得你要去翻那些没用的旧纸。 这就解释了为啥我们总认定 Cache 挺大,后台数据库里查起来却挺稳。出于那些“空瓶子”别看看着满,可绝大多数时候都是空的,真正的数据都在真正的硬盘深处。缓存的功能就像是一个庞大的过滤网,平时让你感觉系统在高速运转,实际上那大局部工夫它只是在打瞌睡,真正干活的时候才从硬盘里把需求的东西捞出来塞进那个大箱子。 举个具体的例子来感受一下数据是如何在这之间流转的。假设你在浏览器里刷新一个网页,你的浏览器在后台就做了一个“预加载”动作,它先把那些可能用到的图片、字体、脚本文件,还有刚刚加载的页面内容,都塞进了浏览器自己的缓存区。
这时候只要网页没坏,这些文件就在小仓库里等着,哪怕服务器那边服务器硬盘里那个文件已经损坏了一整天,浏览器小仓库里的文件还是好好的。等到你真正点击那个按钮,浏览器才从那个小仓库里取走需求的文件,这时候你会发现,整个网页加载的速度快了一半,根本不用等服务器重新拼凑那些原本应当存有“假空瓶子”里的旧数据。 再回过头来看那些被扔出来的“假哥们儿”。在操作系统要么网络协议栈里,那些被当作缓存的旧数据,有时候并不都是确实垃圾。
比如浏览器里的 Cookie,要么网页里的一些广告位信息,它们可能在大内存里存有了好几年,但访问频率低到简直为零。
这时候要是强行把这些数据都扔进缓存的“空瓶子”里,反而可能浪费掉宝贵的缓存空间。
故此,有些优化技术会专门挑那些“空瓶子”里的旧数据,把它们放回硬盘真正的深处,而不是强行塞回小仓库。出于小仓库的寿命忒短,放那些老数据只会加速它的崩溃,不如把它们直接丢到真正保险的硬盘里去。 这就害得了我们平时看到的场景:浏览器页面加载挺快,但黑屏刷新时,有时候会出现怪的动画要么闪烁,有时候就连会看到已经加载过的页面信息被重新加载。
这其中的缘由,就在于缓存那个小仓库随时会空掉,而硬盘里的数据是硬生生被写进去的,哪怕服务器硬盘里那个文件早就烂了,浏览器小仓库里的文件只要没坏,照样能跑通。
这种“假哥们儿”的存有,别看让缓存看起来像个庞大的存仓库,但真正高效的场景,实际上极少。 或许有人会说,既然缓存有如此多“假哥们儿”和“临时仓”,那它到底能提升多快?要是是你存了一堆乱七八糟的数据进去,想立马拿出来,那速度可能只有几兆次每秒,跟一般/平平硬盘差不多。
只有当你存的是热数据,也就是你当下正在用的那些关键信息时,速度才能蹭蹭往上涨,瞬间达到几百兆,就连上千兆,出于它不用去翻那些旧纸,直接抽出来的。 总的来说,缓存并不是一个为了“存更多”而设计的仓库,它更像是一个为了“取得快”而设计的过滤器。真正的“假哥们儿”和“临时仓”构成了缓存的骨架,而那些真正热数据则是间或出现的“真哥们儿”。
只有当两者结合得恰到益处,既保证了数据随时可用,又不会浪费掉那些本该留在硬盘里的旧数据,才算是真正高效。
要是缓存设计得忒死板,强行塞进那些“假哥们儿”,不仅浪费空间,就连可能出于空间不足害得原本正常的缓存失效,反而拖慢速度。
故此,理解缓存,本质上就是理解那些在箱子边缘游荡的“空瓶子”和间或出现的“热数据”之间的微妙平衡。
相关标签:

猜你喜欢

热门阅读

  • 赖柴尔定理-赖柴尔定理
  • 迪拜哪个国家的城市?-迪拜在哪国城市
  • 李毅吧番号及出处-李毅吧番号及出处
  • 贴春联的由来简介50字-春联由来简述
  • 思乡的名言和出处-思乡名言及出处

其他分站