缓存穿透、击穿、雪崩

缓存穿透

缓存和数据库都没有的数据,eg.订单号-1。量大时会导致数据库压力过大。
解决办法:

  • 增加合法性校验。
  • 使用布隆过滤器,可以判断出有没有。
  • 缓存异常结果

    缓存击穿

    在缓存失效时被请求,如果量大,会导致数据库压力过大
    解决办法:

  • 热点数据永不过期
  • 数据为空时,加互斥锁,只允许一个请求击穿,击穿完缓存就有了(这个锁应该设成有限次自旋)

    缓存雪崩

    大量数据同时过期,请求量大会导致数据库压力过大
    解决办法:

  • 热点数据永不过期
  • 过期时间加随机值
  • 热点数据分散到不同分片,避免宕机引起雪崩
  • 两层缓存

你可能感兴趣的:(缓存)