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

redis緩存擊穿/穿透/雪崩面試回答

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

面試官:什么是緩存穿透 ? 怎么解決 ?

候選人

嗯~~,我想一下

緩存穿透是指查詢一個一定不存在的數(shù)據(jù),如果從存儲層查不到數(shù)據(jù)則不寫入緩存,這將導(dǎo)致這個不存在的數(shù)據(jù)每次請求都要到 DB 去查詢,可能導(dǎo)致 DB 掛掉。這種情況大概率是遭到了攻擊。

解決方案的話,我們通常都會用布隆過濾器來解決它

面試官:好的,你能介紹一下布隆過濾器嗎?

候選人

嗯,是這樣~

布隆過濾器主要是用于檢索一個元素是否在一個集合中。我們當(dāng)時使用的是redisson實現(xiàn)的布隆過濾器。

它的底層主要是先去初始化一個比較大數(shù)組,里面存放的二進制0或1。在一開始都是0,當(dāng)一個key來了之后經(jīng)過3次hash計算,模于數(shù)組長度找到數(shù)據(jù)的下標(biāo)然后把數(shù)組中原來的0改為1,這樣的話,三個數(shù)組的位置就能標(biāo)明一個key的存在。查找的過程也是一樣的。

當(dāng)然是有缺點的,布隆過濾器有可能會產(chǎn)生一定的誤判,我們一般可以設(shè)置這個誤判率,大概不會超過5%,其實這個誤判是必然存在的,要不就得增加數(shù)組的長度,其實已經(jīng)算是很劃分了,5%以內(nèi)的誤判率一般的項目也能接受,不至于高并發(fā)下壓倒數(shù)據(jù)庫。

面試官:什么是緩存擊穿 ? 怎么解決 ?

候選人

嗯??!

緩存擊穿的意思是對于設(shè)置了過期時間的key,緩存在某個時間點過期的時候,恰好這時間點對這個Key有大量的并發(fā)請求過來,這些請求發(fā)現(xiàn)緩存過期一般都會從后端 DB 加載數(shù)據(jù)并回設(shè)到緩存,這個時候大并發(fā)的請求可能會瞬間把 DB 壓垮。

解決方案有兩種方式:

第一可以使用互斥鎖:當(dāng)緩存失效時,不立即去load db,先使用如 Redis 的 setnx 去設(shè)置一個互斥鎖,當(dāng)操作成功返回時再進行 load db的操作并回設(shè)緩存,否則重試get緩存的方法

第二種方案可以設(shè)置當(dāng)前key邏輯過期,大概是思路如下:

①:在設(shè)置key的時候,設(shè)置一個過期時間字段一塊存入緩存中,不給當(dāng)前key設(shè)置過期時間

②:當(dāng)查詢的時候,從redis取出數(shù)據(jù)后判斷時間是否過期

③:如果過期則開通另外一個線程進行數(shù)據(jù)同步,當(dāng)前線程正常返回數(shù)據(jù),這個數(shù)據(jù)不是最新

當(dāng)然兩種方案各有利弊:

如果選擇數(shù)據(jù)的強一致性,建議使用分布式鎖的方案,性能上可能沒那么高,鎖需要等,也有可能產(chǎn)生死鎖的問題

如果選擇key的邏輯刪除,則優(yōu)先考慮的高可用性,性能比較高,但是數(shù)據(jù)同步這塊做不到強一致。

面試官:什么是緩存雪崩 ? 怎么解決 ?

候選人

嗯??!

緩存雪崩意思是設(shè)置緩存時采用了相同的過期時間,導(dǎo)致緩存在某一時刻同時失效,請求全部轉(zhuǎn)發(fā)到DB,DB 瞬時壓力過重雪崩。與緩存擊穿的區(qū)別:雪崩是很多key,擊穿是某一個key緩存。

解決方案主要是可以將緩存失效時間分散開,比如可以在原有的失效時間基礎(chǔ)上增加一個隨機值,比如1-5分鐘隨機,這樣每一個緩存的過期時間的重復(fù)率就會降低,就很難引發(fā)集體失效的事件。文章來源地址http://www.zghlxwxcb.cn/news/detail-721289.html

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

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

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • Redis緩存擊穿、雪崩、穿透

    我們通過對數(shù)據(jù)庫的數(shù)據(jù)進行查詢后在redis中緩存,但是在高并發(fā)環(huán)境下,某個保存的key值在失效的瞬間被大量并發(fā)請求訪問,這些持續(xù)的大并發(fā)量就會穿破緩存,直接請求數(shù)據(jù)庫,會對數(shù)據(jù)庫造成巨大壓力,這些請求還會使數(shù)據(jù)多次寫入緩存,多了許多不必要的操作。 ? ?

    2024年02月08日
    瀏覽(26)
  • REDIS緩存穿透 擊穿 雪崩

    REDIS緩存穿透 擊穿 雪崩

    一、前言 ? 在我們?nèi)粘5拈_發(fā)中,無不都是使用數(shù)據(jù)庫來進行數(shù)據(jù)的存儲,由于一般的系統(tǒng)任務(wù)中通常不會存在高并發(fā)的情況,所以這樣看起來并沒有什么問題,可是一旦涉及大數(shù)據(jù)量的需求,比如一些商品搶購的情景,或者是主頁訪問量瞬間較大的時候,單一使用數(shù)據(jù)庫來

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

    1、定義 緩存 就是數(shù)據(jù)交換的 緩沖區(qū) ,緩存就是 緩沖區(qū)內(nèi)的數(shù)據(jù) ,一般從數(shù)據(jù)庫中獲取,存儲于本地代碼。 由于其被 Static 修飾,所以隨著類的加載而被加載到 內(nèi)存之中 ,作為本地緩存,由于其又被 final 修飾,所以其引用和對象之間的關(guān)系是固定的,不能改變,因此不用擔(dān)心賦值(=

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

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

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

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

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

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

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

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

    2023年04月09日
    瀏覽(25)
  • Redis 緩存預(yù)熱+緩存雪崩+緩存擊穿+緩存穿透

    Redis 緩存預(yù)熱+緩存雪崩+緩存擊穿+緩存穿透

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

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

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

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

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

    Redis緩存預(yù)熱-緩存穿透-緩存雪崩-緩存擊穿

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

    2024年03月09日
    瀏覽(30)
  • redis緩存雪崩、穿透和擊穿

    redis緩存雪崩、穿透和擊穿

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

    2024年01月22日
    瀏覽(19)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包