缓存雪崩,穿透和击穿

举报
小鲍侃java 发表于 2021/09/10 22:21:40 2021/09/10
【摘要】 一 缓存雪崩:大量key同时失效,大量请求发送到db上,导致db宕机。 解决办法:设置key过期时间时,使用随机数 setRedis(Key,value,time + Math.random() * 10000); 二 缓存穿透:大量请求请求一个缓存中没有的key,这些请求直接怼到db上,造成宕机。如发送为负数的入参时。(一般为黑...

一 缓存雪崩:大量key同时失效,大量请求发送到db上,导致db宕机。

解决办法:设置key过期时间时,使用随机数

setRedis(Key,value,time + Math.random() * 10000);
 

二 缓存穿透:大量请求请求一个缓存中没有的key,这些请求直接怼到db上,造成宕机。如发送为负数的入参时。(一般为黑客侵入)

解决办法:1.加入入参的验证,防止非法入参。

                  2.nginx加入拦截,防止同一个ip大量的请求。

                  3.使用布隆过滤器判断数据库是否存在,不存在直接返回。

三 缓存击穿:热点key突然失效,大量的请求怼到db,db宕机。

解决办法:1:设置热点缓存不过期

                  2:加入互斥锁

文章来源: baocl.blog.csdn.net,作者:小黄鸡1992,版权归原作者所有,如需转载,请联系作者。

原文链接:baocl.blog.csdn.net/article/details/103079160

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。