1.Reids緩存雪崩
Redis緩存key同一時間大量失效,導致大量請求全部打到數(shù)據(jù)庫,造成數(shù)據(jù)庫掛掉
解決方案
設置緩存失效時間,隨機初始化失效時間
部署集群的時候,把熱點數(shù)據(jù)平均分布到不同redis節(jié)點上去
暴力方法,不設置失效時間,永遠不失效
利用定時任務刷新緩存時間,在失效之前重新刷新失效時間
2.緩存穿透
數(shù)據(jù)庫的主鍵是從0開始遞增,沒有負值。惡意用戶利用這一點,不斷用id小于0的參數(shù)給服務器發(fā)請求,redis就查不到這個緩存,redis中沒有就會去數(shù)據(jù)庫中找,找不到返回空值。惡意用戶一直用id小于0的參數(shù)發(fā)送,就會一直直接穿透緩存,打在數(shù)據(jù)庫上,導致數(shù)據(jù)庫掛掉,
解決方案:
數(shù)據(jù)不論得到什么請求,是空值還是有值都緩存到redis中去,但是對方可能換參數(shù),IP拉黑,但是可能換IP
判斷參數(shù)的合法性,不合法return掉
布隆過濾器
3.緩存擊穿
比如某秒殺商品放到reis緩存中,對應了一個key,只設置了很短的緩存失效時間,大量用戶訪問這個商品的時候都會到redis中訪問該key,redis查詢該緩存key并返回回去,突然這個緩存時間失效了,就把大量訪問該key的數(shù)據(jù)打到數(shù)據(jù)庫中,一般情況下,都是訪問熱點key,被擊穿,打到數(shù)據(jù)庫上,數(shù)據(jù)庫掛掉
解決方案
緩存時間,不過期文章來源:http://www.zghlxwxcb.cn/news/detail-816545.html
分布式鎖,互斥鎖:給緩存找不到,請求數(shù)據(jù)庫這一步上鎖,那么這時候就只有一個線程能夠搶到這個鎖,也就是說只有一個線程到數(shù)據(jù)庫找數(shù)據(jù),數(shù)據(jù)庫壓力就小了,查到數(shù)據(jù)后,再把數(shù)據(jù)重新寫到緩存中去,沒搶到鎖的向等待幾秒文章來源地址http://www.zghlxwxcb.cn/news/detail-816545.html
到了這里,關于什么是reids緩存雪崩、穿透、擊穿的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!