Redis雪崩

说明

大批缓存失效,请求直接打到DB,数据库被打死了。

处理策略

  • 给key的失效时间都加一个随机值,这样可以保证数据不会在同一时间大面积失效。
  • 热点数据可以设置永不过期,有更新操作更新缓存就好了

    缓存穿透

    说明

    指缓存和数据库都没有的数据,而用户不断发起请求,导致数据库压力过大。

    处理策略

  • 接口层增加校验

  • 从缓存取不到的数据,在数据库中也没有查到,这时可以将对应的key的value写为“null, 位置错误,稍后重试”这样的值,具体取啥可以问产品,缓存有效时间可以设置短点,如30秒
  • 要知道如果正常用户单秒不会发起这么多次请求的,网关层Nginx针对单个ip每秒访问次数超出阈值的IP直接拉黑
  • 高级用法:布隆过滤器。利用高效的数据结构和算法快速判断出key是否在数据库存在,不存在直接return就好了,存在就再查询DB刷新key再return

    缓存击穿

    说明

    指一个key非常热点,在不停的抗着大并发,key失效的瞬间,穿破缓存,直接请求数据库。

    处理策略

    设置永久key