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