缓存穿透、缓存击穿、缓存雪崩区别和解决方案?

写回答

缓存穿透、缓存击穿、缓存雪崩区别和解决方案?

9个月前
回答1
  • 莫等闲
    莫等闲
    9个月前
    业精于勤荒于嬉,行成于思毁于随!

    场景

    • 遭受攻击大量随机生成的key访问,或是真正访问但数据库就是没数据
    • 上线前没有进行老数据缓存预加载,大量老数据请求去查询数据库
    • 热点key失效,对热点key的并发访问大
    • 缓存失效,过期时间设置相同同一时间有大量key失效
    • 缓存挂掉,直接查数据库

    缓存处理流程

    前台请求,后台先从缓存中取数据,取到直接返回结果,取不到时从数据库中取,数据库取到更新缓存,并返回结果,数据库也没取到,那直接返回空结果。

    缓存穿透

    描述:

    缓存穿透是指缓存和数据库中都没有的数据,而用户不断发起请求,如发起为id为“-1”的数据或id为特别大不存在的数据。当用户很多的时候,缓存都没有命中,于是都去请求了持久层数据库。这会给持久层数据库造成很大的压力,这时候就相当于出现了缓存穿透。

    这里需要注意和缓存击穿的区别,缓存击穿,是指一个key非常热点,在不停的扛着大并发,大并发集中对这一个点进行访问,当这个key在失效的瞬间,持续的大并发就穿破缓存,直接请求数据库,就像在一个屏障上凿开了一个洞。

    解决方案:

    • 接口层增加校验,如用户鉴权校验,id做基础校验,id
    喜欢
    最佳答案
登录后才能回答问题~