缓存是临时的一块存储空间,用于存放访问频次较高的数据,用空间换响应速度,核心是减少用户对数据库的查询压力
如果没有应用好缓存,将会导致一些不可见或者说很难定位的现网事故,主要是三点:缓存雪崩、缓存击穿和缓存穿透。
缓存雪崩
大部分数据都有一个过期时间的概念,假设我们有一批数据是通过定时服务从数据库写入缓存中,然后我们统一设置了过期时间。当这个时间节点到了,但是由于某种原因数据又没有从数据库写入缓存,导致这时候所有的数据都会前往数据库查询数据,从而引起数据库查询压力,导致数据库并发过大而瘫痪无法正常服务
缓存穿透
访问频繁较高的数据,这里就会出现一种情况,比如说查询信息一直是空数据,空数据按理不属于访问频繁较高的数据,所以经过了缓存,但是并没有缓存该空数据,而是直接穿透进入了数据库,虽然数据库查询也是空数据,但是还是需要经过数据库的查询,这种现象就是击穿了缓存直接前往了数据库查询
缓存击穿
某个访问频次较高的数据失效了,从而导致这一刻高并发的请求全部穿透到了数据库,从而数据库并发压力较高,响应较慢,也进一步导致数据库异常,影响其他业务
此文章为7月Day01学习笔记,内容来源于极客时间《Node.js开发实战》,强烈推荐该课程!