Redis的雪崩穿透击穿

雪崩
原因: 当缓存中存入key值在同一时间集体过期,导致大量的请求越过缓存直接去访问数据库,数据库承受不住如此大量的访问,导致宕机

解决方案:

  • 在给key值设定过期时间的时候,给时间设定随机值,避免key值在同一时间全部失效
  • 给热点数据设置永不过期

穿透
原因:大量的访问数据库中不存在的值,例如数据库中只有id为1,有大量人去访问id = -1,造成数据库压力过大,也有可能压垮数据库

解决方案:

  • 在接口层直接进行校验,禁止不合法的数据请求

击穿
原因:一个热点的key值,在遭受大量访问请求时,恰好过期,数据访问操作涌入数据库中,造成数据库的宕机 ps:不同于雪崩的是,雪崩是大面积的key值同时失效造成的,击穿是一个热点key在失效的瞬间被大量访问压垮数据库

解决方案:

  • 从缓存取不到的数据,在数据库中也没有取到,这时也可以将对应Key的Value对写为null值,设置为短效过期时间,如30秒
  • 对同一ip地址访问多次的人,通过网关拉黑处理

总结

都是由于高并发的数据访问操作造成的,一般情况下redis还是能抗的住,具体事情具体分析

文中有错的地方,请及时提醒我,谢谢

猜你喜欢

转载自blog.csdn.net/smokebai/article/details/109757915