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

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

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

    2 缓存击穿

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

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

    3 缓存雪崩

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

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

      或者热点数据永不过期。

  • 相关阅读:
    python编程设计模式之接口类和抽象类
    python进阶之面向对象初识
    python进阶之异常处理
    python模块之包
    python模块之序列化模块
    python基础二 ---类型转换 ,字符串,列表,元祖,for,range,enumerate
    python基础一
    TCP协议的三次握手
    随机数Math.random()
    Vue.js内部响应式原理探究
  • 原文地址:https://www.cnblogs.com/juniorMa/p/14325471.html
Copyright © 2011-2022 走看看