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