一、緩存穿透
1.何為緩存穿透?
緩存穿透,是指查詢一個(gè)數(shù)據(jù)庫(kù)一定不存在的數(shù)據(jù)。正常的使用緩存流程大致是,數(shù)據(jù)查詢先進(jìn)行緩存查詢,如果key不存在或者key已經(jīng)過期,再對(duì)數(shù)據(jù)庫(kù)進(jìn)行查詢,并把查詢到的對(duì)象,放進(jìn)緩存。如果數(shù)據(jù)庫(kù)查詢對(duì)象為空,則不放進(jìn)緩存。
2.緩存穿透解決方案
1)布隆過濾器攔截不存在的請(qǐng)求
2)redis緩存不存在的值
3)按照業(yè)務(wù)需要,設(shè)定規(guī)則直接進(jìn)行攔截,比如用戶id,要求id>0
二、緩存擊穿
1.何為緩存擊穿?
緩存擊穿,是指一個(gè)key非常熱點(diǎn),在不停的扛著大并發(fā),大并發(fā)集中對(duì)這一個(gè)點(diǎn)進(jìn)行訪問,當(dāng)這個(gè)key在失效的瞬間,持續(xù)的大并發(fā)就穿破緩存,直接請(qǐng)求數(shù)據(jù)庫(kù),就像在一個(gè)屏障上鑿開了一個(gè)洞。
2.緩存擊穿解決方案
1)設(shè)置數(shù)據(jù)永遠(yuǎn)不過期
2)加分布式鎖,單線程查詢數(shù)據(jù)庫(kù)
三、緩存雪崩
1.何為緩存雪崩?
緩存雪崩,是指在某一個(gè)時(shí)間段,緩存集中過期失效。
2.緩存雪崩解決方案
1)緩存數(shù)據(jù)的過期時(shí)間設(shè)置為隨機(jī)值
2)數(shù)據(jù)設(shè)置永不過期