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

【Redis】Redis作為緩存

這篇具有很好參考價(jià)值的文章主要介紹了【Redis】Redis作為緩存。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

【Redis】Redis常見面試題(2)

【Redis】Redis作為緩存,JavaEE,緩存,redis,數(shù)據(jù)庫,java-ee

【Redis】Redis常見面試題(2)

1. 緩存

緩存在計(jì)算機(jī)系統(tǒng)中有著重要的作用,它可以顯著提高系統(tǒng)的性能和響應(yīng)速度

  1. 提升系統(tǒng)性能: 緩存將常用的數(shù)據(jù)或計(jì)算結(jié)果存儲(chǔ)在高速的存儲(chǔ)介質(zhì)中,如內(nèi)存,以便快速地響應(yīng)請(qǐng)求。通過減少對(duì)慢速存儲(chǔ)介質(zhì)(如硬盤或數(shù)據(jù)庫)的訪問次數(shù),可以降低響應(yīng)延遲,提高系統(tǒng)的吞吐量和效率
  2. 減輕后端壓力: 通過緩存,系統(tǒng)可以減少對(duì)后端資源的頻繁訪問,降低數(shù)據(jù)庫或其他外部服務(wù)的負(fù)載。這樣可以節(jié)省計(jì)算資源,提高系統(tǒng)的可擴(kuò)展性和穩(wěn)定性
  3. 改善用戶體驗(yàn): 緩存能夠加速應(yīng)用程序的響應(yīng)速度,從而提供更好的用戶體驗(yàn)。用戶可以更快地獲取所需的數(shù)據(jù)或結(jié)果,減少等待時(shí)間,提高用戶滿意度

就以我們的大腦為例

  1. 5的階乘是120,一般不需要一直拆成5*4*3*2*1去算,而是直接答120,因?yàn)槲覀兇竽X吧5的階乘是120保存到“緩存”了!

  2. 再比如,你是個(gè)數(shù)學(xué)白癡,四道選擇題一道不會(huì),但是你在測試之前看到了答案,答案是ABCD,你記住了,放在“緩存”里;測試的時(shí)候,你直接寫答案,四道選擇題滿分;下次遇到同樣的四道選擇題,題目和選項(xiàng)一模一樣,一些你還記得答案,但是一些忘記了,“忘記了”也就是“緩存的過期”

2. Redis作為緩存

由于Redis高性能,多種數(shù)據(jù)結(jié)構(gòu),持久化支持的特性,再加上天生支持分布式,作為分布式機(jī)的緩存,擔(dān)得起這個(gè)責(zé)任~

下面是Redis作為緩存常見的一些知識(shí)點(diǎn)

2.1 緩存雪崩

緩存雪崩是指在短時(shí)間內(nèi),由大量緩存同時(shí)過期,導(dǎo)致大量的請(qǐng)求直接訪問查詢數(shù)據(jù)庫而不是緩存,從而對(duì)數(shù)據(jù)庫造成巨大的壓力,嚴(yán)重的情況下可能會(huì)導(dǎo)致數(shù)據(jù)庫宕機(jī)!

緩存的存在,減少了請(qǐng)求訪問查詢數(shù)據(jù)庫的頻率,提高效率,減低數(shù)據(jù)庫壓力,過期后,“沒人兜底了”

正常情況下:

【Redis】Redis作為緩存,JavaEE,緩存,redis,數(shù)據(jù)庫,java-ee

緩存雪崩:

【Redis】Redis作為緩存,JavaEE,緩存,redis,數(shù)據(jù)庫,java-ee

解決:

  1. 加鎖排隊(duì),缺點(diǎn)就是增加系統(tǒng)的響應(yīng)時(shí)間,降低系統(tǒng)吞吐量,犧牲一點(diǎn)用戶體驗(yàn)

  2. 隨機(jī)化過期時(shí)間,極大避免了同時(shí)過期這個(gè)事件的發(fā)生,系統(tǒng)常用的方式;甚至可以不設(shè)置過期時(shí)間,但對(duì)硬件要求高

  3. 設(shè)計(jì)二級(jí)緩存,Redis這一層防線淪陷后,二級(jí)緩存挺身而出

    【Redis】Redis作為緩存,JavaEE,緩存,redis,數(shù)據(jù)庫,java-ee

2.2 緩存穿透

緩存穿透指的是查詢數(shù)據(jù)庫和緩存都沒有數(shù)據(jù),因?yàn)閿?shù)據(jù)庫查詢無數(shù)據(jù),出于容錯(cuò)考慮,不會(huì)將結(jié)果保存到緩存中,因此每次請(qǐng)求都會(huì)去查詢數(shù)據(jù)庫,這種情況就叫做緩存穿透

  • 可以理解為每次都無視緩存,緩存一直沒被存數(shù)據(jù),緩存沒有其作用

【Redis】Redis作為緩存,JavaEE,緩存,redis,數(shù)據(jù)庫,java-ee

2.3 緩存擊穿

緩存擊穿指的是個(gè)熱點(diǎn)緩存,在某一時(shí)刻恰好失效了,然后此時(shí)剛好有大量的并發(fā)請(qǐng)求,此時(shí)這些請(qǐng)求將會(huì)給數(shù)據(jù)庫造成巨大的壓力

  • 就像被擊穿了個(gè)洞,一個(gè)缺口,“流量大,水壓高”形成一道強(qiáng)硬的“水刀”刺向數(shù)據(jù)庫
  • 而緩存雪崩則是水壩直接塌了,涌了下來

相比于緩存穿透,穿的嚴(yán)重程度顯然更高

【Redis】Redis作為緩存,JavaEE,緩存,redis,數(shù)據(jù)庫,java-ee

解決方案:

  1. 加鎖排隊(duì)
  2. 設(shè)置永不過期,既然是熱點(diǎn)緩存,它配永不過期!

2.4 緩存雪崩、緩存穿透、緩存擊穿的區(qū)別

  1. 緩存穿透是因?yàn)橐恢睕]有緩存數(shù)據(jù)導(dǎo)致的問題

  2. 緩存擊穿是因?yàn)槟硞€(gè)熱點(diǎn)緩存失效而導(dǎo)致的問題

  3. 緩存血本是因?yàn)橥瑫r(shí)又大量的緩存失效所帶來的問題

2.5 緩存預(yù)熱

是一個(gè)優(yōu)化手段,就是應(yīng)用程序啟動(dòng)或緩存失效之后,主動(dòng)將熱點(diǎn)數(shù)據(jù)加載到緩存中的策略

  • 這樣,在實(shí)際請(qǐng)求到達(dá)應(yīng)用程序時(shí),熱點(diǎn)數(shù)據(jù)已經(jīng)存在于緩存中,從而減少了緩存未命中的情況,提高了應(yīng)用程序的響應(yīng)速度

2.6 如何保證緩存和MySQL雙寫一致

可以采用以下幾種方法:

  1. 讀取優(yōu)先
    • 在讀取數(shù)據(jù)時(shí),優(yōu)先從Redis緩存中讀取,如果緩存中不存在,則從MySQL數(shù)據(jù)庫讀取,并將數(shù)據(jù)寫入Redis緩存。這樣可以確保讀取到的數(shù)據(jù)都是最新的,避免緩存中的臟數(shù)據(jù)
  2. 更新同步
    • 在更新數(shù)據(jù)時(shí),先更新MySQL數(shù)據(jù)庫,然后再更新Redis緩存。這樣可以避免數(shù)據(jù)庫和緩存中的數(shù)據(jù)不一致
  3. 使用隊(duì)列
    • 通過將更新操作寫入隊(duì)列中,然后異步地從隊(duì)列中獲取操作并依次執(zhí)行更新操作,先更新MySQL數(shù)據(jù)庫,然后再更新Redis緩存。這樣可以保證更新操作的順序一致性,并減少數(shù)據(jù)庫和緩存的并發(fā)寫入沖突
  4. 使用事務(wù)
    • 在支持事務(wù)的數(shù)據(jù)庫中,可以使用數(shù)據(jù)庫事務(wù)來同時(shí)更新MySQL和Redis。當(dāng)更新MySQL數(shù)據(jù)庫時(shí),在同一個(gè)事務(wù)中也更新Redis緩存。如果更新Redis緩存失敗,可以回滾數(shù)據(jù)庫事務(wù),確保數(shù)據(jù)的一致性。
  5. 定時(shí)刷新
    • 設(shè)置一個(gè)定時(shí)任務(wù),在一定時(shí)間間隔內(nèi)將MySQL數(shù)據(jù)庫中的數(shù)據(jù)同步到Redis緩存中,保持?jǐn)?shù)據(jù)的一致性??梢愿鶕?jù)業(yè)務(wù)需求設(shè)置合適的刷新時(shí)間間隔

需要注意的是,以上方法會(huì)增加系統(tǒng)的復(fù)雜性和延遲

  • 因此需要根據(jù)具體的業(yè)務(wù)場景和性能要求做出權(quán)衡和選擇
  • 另外,使用緩存和數(shù)據(jù)庫作為雙寫一致性解決方案時(shí),也需要考慮緩存和數(shù)據(jù)庫的高可用性和容錯(cuò)機(jī)制,以確保整個(gè)系統(tǒng)的可靠性

文章到此結(jié)束!謝謝觀看
可以叫我 小馬,我可能寫的不好或者有錯(cuò)誤,但是一起加油鴨??!文章來源地址http://www.zghlxwxcb.cn/news/detail-709409.html


到了這里,關(guān)于【Redis】Redis作為緩存的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • redis的緩存更新策略以及如何保證redis與數(shù)據(jù)庫的數(shù)據(jù)一致性

    redis的緩存更新策略有這么幾種: 1、由應(yīng)用直接和redis以及數(shù)據(jù)庫相連接: ?? ??? ?查詢數(shù)據(jù)時(shí),應(yīng)用去redis中查詢,查不到的話再由應(yīng)用去數(shù)據(jù)庫中查詢,并將查詢結(jié)果放在redis; ?? ??? ?更新數(shù)據(jù)時(shí),由應(yīng)用去觸發(fā)redis數(shù)據(jù)的刪除以及數(shù)據(jù)庫的update。 2、應(yīng)用只跟redi

    2024年02月13日
    瀏覽(25)
  • Redis如何保證緩存和數(shù)據(jù)庫一致性?

    現(xiàn)在我們?cè)诿嫦蛟鰟h改查開發(fā)時(shí),數(shù)據(jù)庫數(shù)據(jù)量大時(shí)或者對(duì)響應(yīng)要求較快,我們就需要用到Redis來拿取數(shù)據(jù)。 Redis:是一種高性能的內(nèi)存數(shù)據(jù)庫,它將數(shù)據(jù)以鍵值對(duì)的形式存儲(chǔ)在內(nèi)存中,具有讀寫速度快、支持多種數(shù)據(jù)類型、原子性操作、豐富的特性等優(yōu)勢。 優(yōu)勢: 性能極高

    2024年01月16日
    瀏覽(41)
  • Redis---數(shù)據(jù)庫和緩存如何保證一致性?

    用「讀 + 寫」請(qǐng)求的并發(fā)的場景來分析: 假如某個(gè)用戶數(shù)據(jù)在緩存中不存在,請(qǐng)求 A 讀取數(shù)據(jù)時(shí)從數(shù)據(jù)庫中查詢到年齡為 20,在未寫入緩存中時(shí)另一個(gè)請(qǐng)求 B 更新數(shù)據(jù)。它更新數(shù)據(jù)庫中的年齡為 21,并且清空緩存。這時(shí)請(qǐng)求 A 把從數(shù)據(jù)庫中讀到的年齡為 20 的數(shù)據(jù)寫入到緩存

    2024年01月24日
    瀏覽(27)
  • Redis如何保障緩存與數(shù)據(jù)庫的數(shù)據(jù)一致性問題?

    Redis如何保障緩存與數(shù)據(jù)庫的數(shù)據(jù)一致性問題?

    目錄 一.最經(jīng)典的數(shù)據(jù)庫加緩存的雙寫雙刪模式 二. 高并發(fā)場景下的緩存+數(shù)據(jù)庫雙寫不一致問題分析與解決方案設(shè)計(jì) 三、上面高并發(fā)的場景下,該解決方案要注意的問題 1.1 Cache Aside Pattern概念以及讀寫邏輯 (1)讀的時(shí)候,先讀緩存,緩存沒有的話,那么就讀數(shù)據(jù)庫,然后取

    2023年04月21日
    瀏覽(29)
  • Springboot+Redis:實(shí)現(xiàn)緩存 減少對(duì)數(shù)據(jù)庫的壓力

    Springboot+Redis:實(shí)現(xiàn)緩存 減少對(duì)數(shù)據(jù)庫的壓力

    ????歡迎光臨,終于等到你啦???? ??我是蘇澤,一位對(duì)技術(shù)充滿熱情的探索者和分享者。???? ??持續(xù)更新的專欄 Redis實(shí)戰(zhàn)與進(jìn)階 本專欄講解Redis從原理到實(shí)踐 這是蘇澤的個(gè)人主頁可以看到我其他的內(nèi)容哦???? 努力的蘇澤 http://suzee.blog.csdn.net/ ? 目錄 緩存如何實(shí)現(xiàn)?

    2024年03月24日
    瀏覽(19)
  • 數(shù)據(jù)庫緩存服務(wù)——NoSQL之Redis配置與優(yōu)化

    數(shù)據(jù)庫緩存服務(wù)——NoSQL之Redis配置與優(yōu)化

    目錄 一、緩存概念 1.1 系統(tǒng)緩存 1.2 緩存保存位置及分層結(jié)構(gòu) 1.2.1 DNS緩存 1.2.2 應(yīng)用層緩存 1.2.3 數(shù)據(jù)層緩存 1.2.4 硬件緩存 二、關(guān)系型數(shù)據(jù)庫與非關(guān)系型數(shù)據(jù)庫 2.1 關(guān)系型數(shù)據(jù)庫 2.2 非關(guān)系型數(shù)據(jù)庫 2.3 關(guān)系型數(shù)據(jù)庫和非關(guān)系型數(shù)據(jù)庫區(qū)別: 2.4 非關(guān)系型數(shù)據(jù)庫產(chǎn)生背景 2.5 總結(jié)

    2024年02月15日
    瀏覽(24)
  • Redis數(shù)據(jù)庫 | 發(fā)布訂閱、主從復(fù)制、哨兵模式、緩存雪崩

    Redis數(shù)據(jù)庫 | 發(fā)布訂閱、主從復(fù)制、哨兵模式、緩存雪崩

    ??wei_shuo的個(gè)人主頁 ??wei_shuo的學(xué)習(xí)社區(qū) ??Hello World ! Redis 發(fā)布訂閱 (pub/sub) 是一種消息通信模式:發(fā)送者 (pub) 發(fā)送消息,訂閱者 (sub) 接收消息 Redis 客戶端可以訂閱任意數(shù)量的頻道 Redis主從復(fù)制是指在Redis中設(shè)置一個(gè)主節(jié)點(diǎn)(Master)和一個(gè)或多個(gè)從節(jié)點(diǎn)(Slave),

    2024年02月15日
    瀏覽(25)
  • Redis緩存MySQL數(shù)據(jù)庫存儲(chǔ)二者如何保證數(shù)據(jù)一致性

    在大型互聯(lián)網(wǎng)應(yīng)用中,由于數(shù)據(jù)庫讀寫頻繁、壓力大等原因,我們通常會(huì)使用緩存來減少數(shù)據(jù)庫的訪問次數(shù),提高系統(tǒng)的性能。而Redis作為一個(gè)高性能的內(nèi)存數(shù)據(jù)庫,成為了緩存的首選方案之一。但是,緩存和數(shù)據(jù)庫之間存在數(shù)據(jù)一致性的問題,如何解決這個(gè)問題呢?本文將

    2023年04月19日
    瀏覽(27)
  • redis面試題目-如何保證數(shù)據(jù)庫與緩存的數(shù)據(jù)一致性

    原視頻:https://www.bilibili.com/video/BV1Km4y1r75f?p=62vd_source=fa75329ae3880aa55609265a0e9f5d34 由于緩存和數(shù)據(jù)庫是分開的,無法做到原子性的同時(shí)進(jìn)行數(shù)據(jù)修改,可能出現(xiàn)緩存更新失敗,或者數(shù)據(jù)庫更新失敗的情況,這時(shí)候會(huì)出現(xiàn)數(shù)據(jù)不一致,影響前端業(yè)務(wù) 先更新數(shù)據(jù)庫,再更新緩存。緩

    2024年02月05日
    瀏覽(27)
  • Redis 緩存與數(shù)據(jù)庫雙寫不一致如何解決

    Redis緩存與數(shù)據(jù)庫雙寫不一致是一個(gè)常見的挑戰(zhàn),但可以通過一些方法來解決或減輕這種不一致性。以下是一些可能的解決方案: 事務(wù)處理: 在進(jìn)行緩存和數(shù)據(jù)庫雙寫時(shí),確保它們被包含在同一事務(wù)中。這可以通過使用支持事務(wù)的數(shù)據(jù)庫和Redis事務(wù)來實(shí)現(xiàn)。這樣,要么兩者同

    2024年01月21日
    瀏覽(24)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包