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

更新于
2026-10-10 21:41:37
0阅读来源:SEO资讯
  • 内容介绍
  • 文章标签
  • 相关推荐

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

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

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



缓存穿透

缓存击穿

缓存雪崩

产生原因

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

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

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

解决方式

1.缓存空值/默认值

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

2.布隆过滤器。

在db和缓存之前加一个布隆过滤器,做⼀层过滤,作用是判断key是否存在,如果不存在,就不会访问存储。从而避免了对底层存储系统的查询压力。

阅读全文

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

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

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



缓存穿透

缓存击穿

缓存雪崩

产生原因

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

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

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

解决方式

1.缓存空值/默认值

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

2.布隆过滤器。

在db和缓存之前加一个布隆过滤器,做⼀层过滤,作用是判断key是否存在,如果不存在,就不会访问存储。从而避免了对底层存储系统的查询压力。

阅读全文