Redis缓存穿透和雪崩

 

 

 

 

 

 

缓存穿透是查不到导致的,而缓存击穿是量太大缓存过期!

解决方案:

1、布隆过滤器

  • 布隆过滤器是一种数据结构,对所有可能的查询参数以hash形式存储,在控制层进行校验,不符合则丢弃,从而避免了对底层存储系统查询压力

 

 

 

 2、缓存空对象

  • 当持久化层不命中后,将返回的空对象存储起来,同时设置一个过期时间,之后再访问这个数据就从缓存中获取,保护持久层数据源
  •  

  • 需要面临的问题
  • 存储空的key也需要空间
    对空值设置了过期时间,还会存在缓存层和存储层的数据有一段时间窗口不一致,对于需要保持一致性的业务会有影响

缓存击穿
例子微博服务器热搜,巨大访问量访问同一个key

一个key非常热点,不停扛着大并发,集中对一个点进行访问,当个key失效的瞬间,持续大并发导致穿破缓存,直接请求数据库

某个key在过期的瞬间,大量的访问会同时访问数据库来查询最新的数据,并且回写缓存,导致数据库瞬间压力过大

 

 

 

 

 

 

 

 

posted @ 2021-09-25 17:07  水墨无痕258  阅读(30)  评论(0)    收藏  举报