# 中间件:缓存是性能优化的首选利器
现在短视频非常火,简单的一个手指上翻滑动,就切到下一个视频。虽然现在已经5G时代,但我们知道下载一个视频,尤其是分辨率很高的视频要花不少时间。那么短视频是如何做到实时响应的呢?
其实,我们在打开视频软件时,后台已经悄悄帮我们提前下载了几个短视频,每次当我们每次翻页时,都是用的本地数据,所以感觉像是秒开一样,这种行为我们称之为缓存。
# 什么是缓存
缓存是数据交换的缓冲区,采用空间换时间
的策略,将原始数据的副本
或提前计算好的数据
临时存储到一些更快的设备中。弥补CPU的高算力和IO的慢读写之间巨大的鸿沟,减少 CPU的浪费等待时间。
评估缓存有个很重要的指标,缓存命中率,命中率越高,说明缓存发挥的价值越大。
缓存命中率 = 从缓存中读取次数 / 总读取次数
# 缓存分类
无论是硬件还是软件,缓存已经随处可见。架构师内部有一句流行话,“性能不够,缓存来凑!”。 广大的开发同学如果要做系统优化,不管遇到什么问题,百试不爽的低成本优化思路就是从「缓存」入手,将原先裸奔的数据缓存化,或者将数据前置到离用户更近的地方,毕竟网络长距离传输也要花费不少时间。
按照使用维度,对缓存做下分类:
# 1、CPU 缓存
CPU缓存分为L1、L2、L3 三级,越靠近CPU的,容量越小,命中率越高。当L3等级的缓存都取不到数据的时候,需从主存中获取。