redis中緩存雪崩、緩存擊穿、緩存穿透指的是什么意思

這篇文章主要介紹了redis中緩存雪崩、緩存擊穿、緩存穿透指的是什么意思,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

讓客戶滿意是我們工作的目標,不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價值的長期合作伙伴,公司提供的服務(wù)項目有:域名與空間、網(wǎng)絡(luò)空間、營銷軟件、網(wǎng)站建設(shè)、富縣網(wǎng)站維護、網(wǎng)站推廣。

什么是redis緩存?

Redis緩存是一個開源的使用ANSIC語言編寫、支持網(wǎng)絡(luò)、可基于內(nèi)存亦可持久化的日志型、Key-Value數(shù)據(jù)庫,并提供多種語言的API。

redis緩存的作用是什么?

Redis緩存的使用,極大的提升了應(yīng)用程序的性能和效率,特別是數(shù)據(jù)查詢方面。但同時,它也帶來了一些問題。其中,最要害的問題,就是數(shù)據(jù)的一致性問題,從嚴格意義上講,這個問題無解。如果對數(shù)據(jù)的一致性要求很高,那么就不能使用緩存。

另外的一些典型問題就是,緩存穿透、緩存雪崩和緩存擊穿。目前,業(yè)界也都有比較流行的解決方案。本篇文章,并不是要更加完美的解決這三個問題,也不是要顛覆業(yè)界流行的解決方案。而是,從實際代碼操作,來演示這三個問題現(xiàn)象。之所以要這么做,是因為,僅僅看這些問題的學(xué)術(shù)解釋,腦袋里很難有一個很形象的概念,有了實際的代碼演示,可以加深對這些問題的理解和認識。

緩存穿透

緩存穿透,是指查詢一個數(shù)據(jù)庫一定不存在的數(shù)據(jù)。正常的使用緩存流程大致是,數(shù)據(jù)查詢先進行緩存查詢,如果key不存在或者key已經(jīng)過期,再對數(shù)據(jù)庫進行查詢,并把查詢到的對象,放進緩存。如果數(shù)據(jù)庫查詢對象為空,則不放進緩存。

代碼流程

1、參數(shù)傳入對象主鍵ID

2、根據(jù)key從緩存中獲取對象

3、如果對象不為空,直接返回

4、如果對象為空,進行數(shù)據(jù)庫查詢

5、如果從數(shù)據(jù)庫查詢出的對象不為空,則放入緩存(設(shè)定過期時間)想象一下這個情況,如果傳入的參數(shù)為-1,會是怎么樣?這個-1,就是一定不存在的對象。就會每次都去查詢數(shù)據(jù)庫,而每次查詢都是空,每次又都不會進行緩存。假如有惡意攻擊,就可以利用這個漏洞,對數(shù)據(jù)庫造成壓力,甚至壓垮數(shù)據(jù)庫。即便是采用UUID,也是很容易找到一個不存在的KEY,進行攻擊。

小編在工作中,會采用緩存空值的方式,也就是【代碼流程】中第5步,如果從數(shù)據(jù)庫查詢的對象為空,也放入緩存,只是設(shè)定的緩存過期時間較短,比如設(shè)置為60秒。

(學(xué)習(xí)視頻分享:redis視頻教程)

緩存雪崩

緩存雪崩,是指在某一個時間段,緩存集中過期失效。

產(chǎn)生雪崩的原因之一,比如在寫本文的時候,馬上就要到雙十二零點,很快就會迎來一波搶購,這波商品時間比較集中的放入了緩存,假設(shè)緩存一個小時。那么到了凌晨一點鐘的時候,這批商品的緩存就都過期了。而對這批商品的訪問查詢,都落到了數(shù)據(jù)庫上,對于數(shù)據(jù)庫而言,就會產(chǎn)生周期性的壓力波峰。

小編在做電商項目的時候,一般是采取不同分類商品,緩存不同周期。在同一分類中的商品,加上一個隨機因子。這樣能盡可能分散緩存過期時間,而且,熱門類目的商品緩存時間長一些,冷門類目的商品緩存時間短一些,也能節(jié)省緩存服務(wù)的資源。

其實集中過期,倒不是非常致命,比較致命的緩存雪崩,是緩存服務(wù)器某個節(jié)點宕機或斷網(wǎng)。因為自然形成的緩存雪崩,一定是在某個時間段集中創(chuàng)建緩存,那么那個時候數(shù)據(jù)庫能頂住壓力,這個時候,數(shù)據(jù)庫也是可以頂住壓力的。無非就是對數(shù)據(jù)庫產(chǎn)生周期性的壓力而已。而緩存服務(wù)節(jié)點的宕機,對數(shù)據(jù)庫服務(wù)器造成的壓力是不可預(yù)知的,很有可能瞬間就把數(shù)據(jù)庫壓垮。

緩存擊穿

緩存擊穿,是指一個key非常熱點,在不停的扛著大并發(fā),大并發(fā)集中對這一個點進行訪問,當這個key在失效的瞬間,持續(xù)的大并發(fā)就穿破緩存,直接請求數(shù)據(jù)庫,就像在一個屏障上鑿開了一個洞。

小編在做電商項目的時候,把這貨就成為“爆款”。

其實,大多數(shù)情況下這種爆款很難對數(shù)據(jù)庫服務(wù)器造成壓垮性的壓力。達到這個級別的公司沒有幾家的。所以,務(wù)實主義的小編,對主打商品都是早早的做好了準備,讓緩存永不過期。即便某些商品自己發(fā)酵成了爆款,也是直接設(shè)為永不過期就好了。

大道至簡,mutex key互斥鎖真心用不上。

感謝你能夠認真閱讀完這篇文章,希望小編分享的“redis中緩存雪崩、緩存擊穿、緩存穿透指的是什么意思”這篇文章對大家有幫助,同時也希望大家多多支持創(chuàng)新互聯(lián),關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,更多相關(guān)知識等著你來學(xué)習(xí)!

文章標題:redis中緩存雪崩、緩存擊穿、緩存穿透指的是什么意思
URL標題:http://muchs.cn/article34/ghsspe.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供Google品牌網(wǎng)站設(shè)計、App開發(fā)、網(wǎng)站內(nèi)鏈、企業(yè)建站、服務(wù)器托管

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站托管運營