一、前言
高并发,数据库如mysql是瓶颈,压力很大
通常会引入redis作为mysql的缓存,一来缓解mysql压力、而来提升访问速度
如下图:正常流程就是,请求先到redis、没有才会到mysql里查,查完后再缓存到redis中以便下次访问命中
但使用过程中会发生缓存穿透、缓存击穿、缓存雪崩等问题
二、缓存穿透
2.1 什么是缓存穿透
缓存穿透:redis中访问不到数据,请求穿透redis打到了mysql上,低频穿透不可避免,但高频、恶意则易引发mysql瘫痪
高并发,数据库如mysql是瓶颈,压力很大
通常会引入redis作为mysql的缓存,一来缓解mysql压力、而来提升访问速度
如下图:正常流程就是,请求先到redis、没有才会到mysql里查,查完后再缓存到redis中以便下次访问命中
但使用过程中会发生缓存穿透、缓存击穿、缓存雪崩等问题
缓存穿透:redis中访问不到数据,请求穿透redis打到了mysql上,低频穿透不可避免,但高频、恶意则易引发mysql瘫痪
例如:黑客,一直提交查询id=-1的订单,该订单压根不存在,导致查询请求不可能命中redis缓存,则会打到数据库上