美文网首页
redis高级-击穿、雪崩、穿透

redis高级-击穿、雪崩、穿透

作者: ssttIsme | 来源:发表于2023-05-07 15:46 被阅读0次

    缓存击穿:高并发时,当一个key非常热点(类似于爆款)【冷门的key设置了过期时间】,在不停的扛着大并发,当这个key失效的瞬间,持续的大并发就穿破缓存,直接请求数据库并设置到缓存中,导致性能下降。
    解决方案:
    1数据永不过期(可以写一个算法修改过期时间)
    2加锁排队(加同步锁和双重检查锁)

    缓存雪崩:缓存集中过期,或者缓存服务器宕机,导致大量请求访问数据库,造成数据库压力瞬间过大,宕机。
    解决方案:
    1加锁排队
    2加上随机失效时间
    3对redis做高可用(针对缓存服务器宕机)

    缓存穿透:大量请求的数据在缓存不存在,数据库也不存在,导致每次请求都会取查询数据库。这时的用户很可能是攻击者,如发起id为“-1”的数据或id特别大。
    解决方案:
    1采用参数校验(id校验)
    2缓存空对象(不管有没有数据都缓存key到redis并设置一个失效时间)
    3设置布隆过滤器(把一些用户请求的不存在的id放到布隆过滤器当中,请求的时候先来到布隆过滤器,如果当前请求的用户id比如说是-1,现在布隆过滤器查找如果没有再去数据库查找,如果数据库也没有就缓存一个空的到布隆过滤器里,下次用户再找布隆过滤器就直接返回空-黑名单方式/数据库有的数据放到布隆过滤器-白名单)

    相关文章

      网友评论

          本文标题:redis高级-击穿、雪崩、穿透

          本文链接:https://www.haomeiwen.com/subject/hdahsdtx.html