zoukankan      html  css  js  c++  java
  • Redis之缓存穿透,缓存击穿,缓存雪崩

    1 缓存穿透是指缓存和数据库中都没有的数据,而用户不断发起请求,我们数据库的 id 都是1开始自增上去的,如发起为id值为 -1 的数据或 id 为特别大不存在的数据。这时的用户很可能是攻击者,攻击会导致数据库压力过大,严重会击垮数据库。

      缓存穿透一般是人为攻击,解决手段可以是使用布隆过滤器,如果布隆过滤器判断不存在那就是不存在,请求也不会让它打到数据库

    2 缓存击穿

      缓存击穿是指一个Key非常热点,在不停的扛着大并发,大并发集中对这一个点进行访问,当这个Key在失效的瞬间,持续的大并发就穿破缓存,直接请求数据库,就像在一个完好无损的桶上凿开了一个洞。

      设置热点数据永远不过期。或者加上互斥锁就能搞定了

    3 缓存雪崩

      缓存雪崩就是要么缓存没有提前把数据放进去,要么就是同一个时间点数据大批失效,导致大量的请求打到数据库进而可能把数据库打挂了

      在批量往Redis存数据的时候,把每个Key的失效时间都加个随机值就好了,这样可以保证数据不会在同一时间大面积失效

      或者热点数据永不过期。

  • 相关阅读:
    ●BZOJ 2669 [cqoi2012]局部极小值
    ●HDU 6021 MG loves string
    试试数学公式~
    ●BZOJ 3622 已经没有什么好害怕的了
    ●BZOJ 2560 串珠子
    ●BZOJ 4361 isn
    ●BZOJ 2393 Cirno的完美算数教室
    ●BZOJ 1042 [HAOI2008]硬币购物
    ●BZOJ 2839 集合计数
    【LG2481】[SDOI2011]拦截导弹
  • 原文地址:https://www.cnblogs.com/juniorMa/p/14325471.html
Copyright © 2011-2022 走看看