Redis缓存穿透、击穿、雪崩三者有何本质区别?
- 内容介绍
- 文章标签
- 相关推荐
本文共计992个文字,预计阅读时间需要4分钟。
缓存穿透+缓存击穿+缓存雪崩+生产原因+查询一个根本不存在的数据,+缓存层和存储层都不会命中,导致每次请求都直接打到数据库,+失去了缓存保护后端存储的意义+redis中某个热点key
缓存穿透
缓存击穿
缓存雪崩
产生原因
查询一个根本不存在的数据, 缓存层和存储层都不会命中,导致每次请求直接打到数据库, 失去了缓存保护后端存储的意义
redis中某个热点key(访问量很高的key)过期,此时大量请求同时过来,发现缓存中没有命中,这些请求都打到db上了,导致db压力瞬时大增,可能会打垮db
某⼀时刻发⽣⼤规模的缓存失效的情况,例如缓存服务宕机、⼤量 key 在同⼀时间过期,这样的后果就是⼤量的请求进来直接打到 DB 上,可能导致整个系统的崩溃
解决方式
1.缓存空值/默认值
在第一次查询缓存和db都不命中之后,把⼀个空对象或者默认值保存到缓存,之后再访问这个数据,就会从缓存中获取,这样就保护了数据库
2.布隆过滤器。
本文共计992个文字,预计阅读时间需要4分钟。
缓存穿透+缓存击穿+缓存雪崩+生产原因+查询一个根本不存在的数据,+缓存层和存储层都不会命中,导致每次请求都直接打到数据库,+失去了缓存保护后端存储的意义+redis中某个热点key
缓存穿透
缓存击穿
缓存雪崩
产生原因
查询一个根本不存在的数据, 缓存层和存储层都不会命中,导致每次请求直接打到数据库, 失去了缓存保护后端存储的意义
redis中某个热点key(访问量很高的key)过期,此时大量请求同时过来,发现缓存中没有命中,这些请求都打到db上了,导致db压力瞬时大增,可能会打垮db
某⼀时刻发⽣⼤规模的缓存失效的情况,例如缓存服务宕机、⼤量 key 在同⼀时间过期,这样的后果就是⼤量的请求进来直接打到 DB 上,可能导致整个系统的崩溃
解决方式
1.缓存空值/默认值
在第一次查询缓存和db都不命中之后,把⼀个空对象或者默认值保存到缓存,之后再访问这个数据,就会从缓存中获取,这样就保护了数据库
2.布隆过滤器。

