Redis缓存穿透、击穿、雪崩三者有何本质区别?

2026-04-12 16:481阅读0评论SEO教程
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计992个文字,预计阅读时间需要4分钟。

Redis缓存穿透、击穿、雪崩三者有何本质区别?

缓存穿透+缓存击穿+缓存雪崩+生产原因+查询一个根本不存在的数据,+缓存层和存储层都不会命中,导致每次请求都直接打到数据库,+失去了缓存保护后端存储的意义+redis中某个热点key



缓存穿透

缓存击穿

缓存雪崩

产生原因

查询一个根本不存在的数据, 缓存层和存储层都不会命中,导致每次请求直接打到数据库, 失去了缓存保护后端存储的意义

redis中某个热点key(访问量很高的key)过期,此时大量请求同时过来,发现缓存中没有命中,这些请求都打到db上了,导致db压力瞬时大增,可能会打垮db

某⼀时刻发⽣⼤规模的缓存失效的情况,例如缓存服务宕机、⼤量 key 在同⼀时间过期,这样的后果就是⼤量的请求进来直接打到 DB 上,可能导致整个系统的崩溃

解决方式

1.缓存空值/默认值

在第一次查询缓存和db都不命中之后,把⼀个空对象或者默认值保存到缓存,之后再访问这个数据,就会从缓存中获取,这样就保护了数据库

2.布隆过滤器。

阅读全文

本文共计992个文字,预计阅读时间需要4分钟。

Redis缓存穿透、击穿、雪崩三者有何本质区别?

缓存穿透+缓存击穿+缓存雪崩+生产原因+查询一个根本不存在的数据,+缓存层和存储层都不会命中,导致每次请求都直接打到数据库,+失去了缓存保护后端存储的意义+redis中某个热点key



缓存穿透

缓存击穿

缓存雪崩

产生原因

查询一个根本不存在的数据, 缓存层和存储层都不会命中,导致每次请求直接打到数据库, 失去了缓存保护后端存储的意义

redis中某个热点key(访问量很高的key)过期,此时大量请求同时过来,发现缓存中没有命中,这些请求都打到db上了,导致db压力瞬时大增,可能会打垮db

某⼀时刻发⽣⼤规模的缓存失效的情况,例如缓存服务宕机、⼤量 key 在同⼀时间过期,这样的后果就是⼤量的请求进来直接打到 DB 上,可能导致整个系统的崩溃

解决方式

1.缓存空值/默认值

在第一次查询缓存和db都不命中之后,把⼀个空对象或者默认值保存到缓存,之后再访问这个数据,就会从缓存中获取,这样就保护了数据库

2.布隆过滤器。

阅读全文