在以后學(xué)習(xí)Python的過程中,很多小伙伴都會(huì)向web開發(fā)的方向靠攏。在網(wǎng)頁(yè)中,最常用的是緩存,可以用來(lái)實(shí)現(xiàn)各種功能。比如我們登錄一個(gè)網(wǎng)頁(yè)的時(shí)候,瀏覽器會(huì)問你是否記住,如果你選擇記住用戶名和密碼,就會(huì)用到緩存,緩存也會(huì)遇到一些問題。有關(guān)詳細(xì)信息,請(qǐng)參閱以下內(nèi)容:
什么是緩存穿透?
當(dāng)我們?cè)L問一個(gè)鍵時(shí),也就是下標(biāo)。如果這個(gè)鍵對(duì)應(yīng)的數(shù)據(jù)不存在,自然不會(huì)從緩存中獲取,然后這些請(qǐng)求將訪問數(shù)據(jù)庫(kù)。如果數(shù)據(jù)量很大,自然會(huì)對(duì)數(shù)據(jù)庫(kù)產(chǎn)生產(chǎn)生較大壓力從而導(dǎo)致崩潰,那什么情況數(shù)據(jù)會(huì)不存在呢?例如,使用不存在的用戶id獲取信息,或者一些帶有負(fù)數(shù)的信息,不法分子利用該漏洞進(jìn)行攻擊很可能導(dǎo)致數(shù)據(jù)庫(kù)崩潰。
什么是緩存擊穿?
當(dāng)我們查詢到某個(gè)鍵對(duì)應(yīng)的數(shù)據(jù)時(shí),redis中確實(shí)存在,但是已經(jīng)過期了,即無(wú)法從緩存中獲取到數(shù)據(jù),那么就會(huì)去數(shù)據(jù)庫(kù)中查找,如果這個(gè)鍵在某個(gè)在某個(gè)時(shí)間點(diǎn),超高并發(fā)訪問的數(shù)據(jù),即非常熱的數(shù)據(jù),自然會(huì)請(qǐng)求數(shù)據(jù)庫(kù),導(dǎo)致后端數(shù)據(jù)庫(kù)崩潰。
什么是緩存雪崩?
緩存雪崩與緩存擊穿類似,不同的是,緩存雪崩是針對(duì)多個(gè)鍵的緩存,而緩存擊穿則是針對(duì)某個(gè)鍵。當(dāng)我們查詢多個(gè)鍵對(duì)應(yīng)的數(shù)據(jù)時(shí),這些鍵在緩存中都是過期的,那么這些大量的請(qǐng)求就會(huì)去數(shù)據(jù)庫(kù)進(jìn)行查詢?cè)L問,從而導(dǎo)致數(shù)據(jù)庫(kù)崩潰。