这是本人学习的总结,主要学习资料如下
- B站狂神说,redis教程
1、缓存雪崩和缓存穿透的基本概念
1.1、缓存穿透(查不到)
一般的模型当中,一次查询会优先到redis中查询,如果没有查询到才进行mysql查询。但如果mysql中也没有对应数据,那这两次查询就无功而返。
一般情况下以上查询没什么问题。但在高并发的场景下,如果有大量请求想查询同一字段,而这一字段又不存在,那就会在短时间内进行大量的mysql查询,造成数据库崩溃,这就是缓存穿透。
## 1.2、缓存击穿(过期没找到) redis缓存中设置的值总是有过期时间,如果有一个超热点在失效的那一刻迎来了大量的请求,这些请求发现redis里没有数据,就会转到mysql中查询。数据从mysql中取出,重新存到redis中有个时间差,在这个时间差内的所有请求都会查询mysql,那mysql就有可能承受不住压力崩溃。这就是缓存击穿。
## 1.3、缓存雪崩 指某一时间段内,缓存集中过期,或者Redis宕机,缓存集体失效。