缓存是什么?
起源于CPU,原始意义是指访问速度⽐⼀般随机存取存储器(RAM)快的⼀种RAM,通常它 不像系统主存那样使⽤DRAM技术,⽽使⽤昂贵但较快速的SRAM技术
缓存类别
CPU L1/L2/L3 Cache、Linux page Cache加速硬盘读写、浏览器缓存、堆内缓存(进程缓存)、分布式缓 存
离CPU越近的速度越快
缓存触发条件
1.用户访问触发:用户第一次进来走数据库,数据加入缓存,第二次进来如果缓存没过期返回。但弊端也暴露出来了,如果用户恰恰每次访问都是等过期了才触发,这样缓存就没什么意义了
2.异步刷缓存:用户访问读多写少的业务场景,不管多少用户获取的都是相同数据,比如设置2分钟刷新,主动去刷新缓存
但以上方法都有弊端,异步刷数据,如果你数据太多,但你用户访问数都是不确定的,可能今天就100个人访问,明天可能100万个人访问,只是举例子。所以一切方式都是看场景
缓存带来的回报
高速读写:缓存加速读写速度
降低后端负载:后端服务器通过前端缓存降低负载-业务端使用Redis降低后端MySQL负载等
缓存带来的代价
数据不一致:缓存层和数据层有时窗口不一致,和更新策略有关
代码维护成本:原本只需读写MySQL就能实现功能,但加入了缓存之后就要去维护缓存的数据,增加代码复杂度
堆内存可能带来内存溢出的风险影响用户进程