国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Redis 緩存穿透擊穿和雪崩

這篇具有很好參考價值的文章主要介紹了Redis 緩存穿透擊穿和雪崩。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

一、說明

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

二、緩存穿透

2.1 概念

????????緩存穿透的概念很簡單,用戶想要查詢一個數(shù)據(jù),發(fā)現(xiàn) redis 內(nèi)存數(shù)據(jù)庫沒有,也就是緩存沒有命中,于是向持久層數(shù)據(jù)庫查詢。發(fā)現(xiàn)也沒有,于是本次查詢失敗。當用戶很多的時候,緩存都沒有命中,于是都去請求了持久層數(shù)據(jù)庫。這會給持久層數(shù)據(jù)庫造成很大的壓力,這時候就相當于出現(xiàn)了緩存穿透。

2.2 解決方案

2.2.1 布隆過濾器

????????布隆過濾器是一種數(shù)據(jù)結構,對所有可能查詢的參數(shù)以 hash 形式存儲,在控制層先進行校驗,不符合則丟棄,從而避免了對底層存儲系統(tǒng)的查詢壓力。

Redis 緩存穿透擊穿和雪崩,redis,redis

2.2.2 緩存空對象

????????當存儲層不命中后,即使返回的空對象也將其緩存起來,同時會設置一個過期時間,之后再訪問這個數(shù)據(jù)將會從緩存中獲取,保護了后端數(shù)據(jù)源。

Redis 緩存穿透擊穿和雪崩,redis,redis

2.2.3 可能存在的問題

? ? ? ? 1、如果空值能夠被緩存起來,這就意味著緩存需要更多的空間存儲更多的鍵,因為這當中可能會有很多的空值的鍵。

? ? ? ? 2、即使對空值設置了過期時間,還是會存在緩存層和存儲層的數(shù)據(jù)會有一段時間窗口的不一致,這對于需要保持一致性的業(yè)務會有影響。?

三、緩存擊穿

3.1 概念

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

????????當某個 key 在過期的瞬間,有大量的請求并發(fā)訪問,這類數(shù)據(jù)一般是熱點數(shù)據(jù),由于緩存過期,會同時訪問數(shù)據(jù)庫來查詢最新數(shù)據(jù),并且回寫緩存,會導使數(shù)據(jù)庫瞬間壓力過大。

3.2 解決方案

3.2.1 設置熱點數(shù)據(jù)永不過期

????????從緩存層面來看,沒有設置過期時間,所以不會出現(xiàn)熱點 key 過期后產(chǎn)生的問題

3.2.2 加互斥鎖

????????分布式鎖:使用分布式鎖,保證對于每個 key 同時只有一個線程去查詢后端服務,其他線程沒有獲得分布式鎖的權限,因此只需要等待即可。這種方式將高并發(fā)的壓力轉(zhuǎn)移到了分布式鎖,因此對分布式鎖的考驗很大。

四、緩存雪崩

4.1 概念

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

????????產(chǎn)生雪崩的原因之一,比如在寫本文的時候,馬上就要到雙十二零點,很快就會迎來一波搶購,這波商品時間比較集中的放入了緩存,假設緩存一個小時。那么到了凌晨一點鐘的時候,這批商品的緩存就都過期了。而對這批商品的訪問查詢,都落到了數(shù)據(jù)庫上,對于數(shù)據(jù)庫而言,就會產(chǎn)生周期性的壓力波峰。于是所有的請求都會達到存儲層,存儲層的調(diào)用量會暴增,造成存儲層也會掛掉的情況。

Redis 緩存穿透擊穿和雪崩,redis,redis

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

4.2 解決方案

4.2.1 redis 高可用

????????這個思想的含義是,既然 redis 有可能掛掉,那我多增設幾臺 redis,這樣一臺掛掉之后其他的還可以繼續(xù)工作,其實就是搭建的集群。

4.2.2 限流降級

????????這個解決方案的思想是,在緩存失效后,通過加鎖或者隊列來控制讀數(shù)據(jù)庫寫緩存的線程數(shù)量。比如對某個 key 只允許一個線程查詢數(shù)據(jù)和寫緩存,其他線程等待。

4.2.3 數(shù)據(jù)預熱

????????數(shù)據(jù)加熱的含義就是在正式部署之前,我先把可能的數(shù)據(jù)先預先訪問一遍,這樣部分可能大量訪問的數(shù)據(jù)就會加載到緩存中。在即將發(fā)生大并發(fā)訪問前手動觸發(fā)加載緩存不同的 key,設置不同的過期時間,讓緩存失效的時間點盡量均勻。文章來源地址http://www.zghlxwxcb.cn/news/detail-692373.html

到了這里,關于Redis 緩存穿透擊穿和雪崩的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • Redis之緩存穿透+緩存雪崩+緩存擊穿

    Redis之緩存穿透+緩存雪崩+緩存擊穿

    在生產(chǎn)環(huán)境中,會因為很多的原因造成訪問請求繞過了緩存,都需要訪問數(shù)據(jù)庫持久層,雖然對Redsi緩存服務器不會造成影響,但是數(shù)據(jù)庫的負載就會增大,使緩存的作用降低 ??緩存穿透是指查詢一個根本不存在的數(shù)據(jù),緩存層和持久層都不會命中。在日常工作中出于容錯

    2023年04月09日
    瀏覽(24)
  • Redis的緩存穿透,緩存擊穿,緩存雪崩

    Redis的緩存穿透,緩存擊穿,緩存雪崩

    什么是緩存穿透? 緩存穿透說簡單點就是大量請求的 key 是不合理的, 根本不存在于緩存中,也不存在于數(shù)據(jù)庫中 。這就導致這些請求直接到了數(shù)據(jù)庫上,根本沒有經(jīng)過緩存這一層,對數(shù)據(jù)庫造成了巨大的壓力,可能直接就被這么多請求弄宕機了。 eg:某個黑客故意制造一

    2024年02月10日
    瀏覽(20)
  • 68、Redis:緩存雪崩、緩存穿透、緩存擊穿

    緩存雪崩是指緩存同一時間大面積的失效,所以,后面的請求都會落到數(shù)據(jù)庫上,造成數(shù)據(jù)庫短時間內(nèi)承受大量請求而崩掉。 緩存數(shù)據(jù)的過期時間設置隨機,防止同一時間大量數(shù)據(jù)過期現(xiàn)象發(fā)生 給每一個緩存數(shù)據(jù)增加相應的緩存標記,記錄緩存是否失效,如果緩存標記失效

    2024年02月16日
    瀏覽(22)
  • Redis 緩存穿透擊穿和雪崩

    Redis 緩存穿透擊穿和雪崩

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

    2024年02月10日
    瀏覽(33)
  • redis緩存雪崩、穿透和擊穿

    redis緩存雪崩、穿透和擊穿

    緩存雪崩 ? 對于系統(tǒng) A,假設每天高峰期每秒 5000 個請求,本來緩存在高峰期可以扛住每秒 4000 個請求,但是緩存機器意外發(fā)生了全盤宕機或者大量緩存集中在某一個時間段失效。緩存掛了,此時 1 秒 5000 個請求全部落數(shù)據(jù)庫,數(shù)據(jù)庫必然扛不住,它會報一下警,然后就掛了

    2024年01月22日
    瀏覽(19)
  • Redis 緩存雪崩、穿透、擊穿、預熱

    Redis 緩存雪崩、穿透、擊穿、預熱

    ????????在實際工程中,Redis 緩存問題常伴隨高并發(fā)場景出現(xiàn)。例如, 電商大促、活動報名、突發(fā)新聞 時,由于緩存失效導致大量請求訪問數(shù)據(jù)庫,導致 雪崩 、 擊穿 、 穿透 等問題。因此,新系統(tǒng)上線前需 預熱 緩存,以應對高并發(fā),減輕數(shù)據(jù)庫壓力。本章主要圍繞這

    2024年04月12日
    瀏覽(22)
  • Redis 緩存預熱+緩存雪崩+緩存擊穿+緩存穿透

    Redis 緩存預熱+緩存雪崩+緩存擊穿+緩存穿透

    面試題: 緩存預熱、雪萌、穿透、擊穿分別是什么?你遇到過那幾個情況? 緩存預熱你是怎么做的? 如何造免或者減少緩存雪崩? 穿透和擊穿有什么區(qū)別?他兩是一個意思還是載然不同? 穿適和擊穿你有什么解決方案?如何避免? 假如出現(xiàn)了緩存不一致,你有哪些修補方

    2024年02月10日
    瀏覽(20)
  • Redis緩存預熱-緩存穿透-緩存雪崩-緩存擊穿

    Redis緩存預熱-緩存穿透-緩存雪崩-緩存擊穿

    什么叫緩存穿透? 模擬一個場景: 前端用戶發(fā)送請求獲取數(shù)據(jù),后端首先會在緩存Redis中查詢,如果能查到數(shù)據(jù),則直接返回.如果緩存中查不到數(shù)據(jù),則要去數(shù)據(jù)庫查詢,如果數(shù)據(jù)庫有,將數(shù)據(jù)保存到Redis緩存中并且返回用戶數(shù)據(jù).如果數(shù)據(jù)庫沒有則返回null; 這個緩存穿透的問題就是這個

    2024年03月09日
    瀏覽(29)
  • Redis(緩存預熱,緩存雪崩,緩存擊穿,緩存穿透)

    Redis(緩存預熱,緩存雪崩,緩存擊穿,緩存穿透)

    目錄 一、緩存預熱 二、緩存雪崩 三、緩存擊穿 四、緩存穿透 ? 開過車的都知道,冬天的時候啟動我們的小汽車之后不要直接駕駛,先讓車子發(fā)動機預熱一段時間再啟動。緩存預熱是一樣的道理。 緩存預熱就是系統(tǒng)啟動前,提前將相關的緩存數(shù)據(jù)直接加載到緩存系統(tǒng)。避免

    2024年02月10日
    瀏覽(36)
  • Redis的緩存穿透、緩存擊穿和緩存雪崩

    Redis的緩存穿透、緩存擊穿和緩存雪崩

    目錄 一、解釋說明 二、緩存穿透 ?1.?什么是緩存穿透? ?2. 常見的兩種解決方案 ?(1)緩存空對象 ?(2)布隆過濾 3.?編碼解決商品查詢的緩存穿透問題 三、緩存擊穿 ?1.? 什么是緩存擊穿? ?2、緩存擊穿解決方案(2種) (1)互斥鎖 (2)邏輯過期 ?3.? 互斥鎖與邏輯過

    2024年02月14日
    瀏覽(19)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包