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

Redis什么是緩存穿透、擊穿、雪崩?如何解決

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

緩存與后端系統(tǒng)

通常后端會采用Mysql等磁盤數(shù)據(jù)庫,可以持久化但是訪問慢,高并發(fā)時性能差,需要設置Nosql內(nèi)存型數(shù)據(jù)庫緩存:Redis等

Redis什么是緩存穿透、擊穿、雪崩?如何解決

但緩存可能出現(xiàn):緩存穿透、緩存擊穿、緩存雪崩等問題


認識緩存穿透、擊穿、雪崩

  • 熱點key:常被訪問的key,如熱搜榜

  • 緩存穿透

查找數(shù)據(jù)的順序是:先查找緩存,再查找數(shù)據(jù)庫

當查找一個數(shù)據(jù)時,緩存沒有都會請求數(shù)據(jù)庫,當查找的數(shù)據(jù)為熱點key,高并發(fā)時緩存就起不到作用,會壓垮數(shù)據(jù)庫
如果黑客利用這個不存在的key進行攻擊可能壓垮數(shù)據(jù)庫

  • 緩存擊穿

緩存中沒有數(shù)據(jù)但數(shù)據(jù)庫里有(例如緩存過期),會進入后端訪問數(shù)據(jù)庫并回設到緩存,高并發(fā)的請求key,會壓垮數(shù)據(jù)庫

  • 緩存雪崩

當緩存服務器重啟或者緩存短時間內(nèi)大量失效,高并發(fā)時,引起數(shù)據(jù)庫壓力過大甚至宕機。

和緩存擊穿不同的是, 緩存擊穿指并發(fā)查同一條數(shù)據(jù),緩存雪崩是不同數(shù)據(jù)都過期了,很多數(shù)據(jù)都查不到從而查數(shù)據(jù)庫


緩存穿透解決方案

緩存穿透是查詢不存在的數(shù)據(jù)時會訪問數(shù)據(jù)庫

有兩種方法:

  • 布隆過濾器:將數(shù)據(jù)庫中的數(shù)據(jù)哈希映射到bitmap(0、1表示存在、不存在),查詢時先訪問bitmap,查詢不存在的數(shù)據(jù)就會被bitmap攔截,就不用進入數(shù)據(jù)庫查詢

Redis什么是緩存穿透、擊穿、雪崩?如何解決

  • 返回空值給緩存:當查詢不存在數(shù)據(jù)訪問數(shù)據(jù)庫返回值為空,仍然將空值進行緩存(Redis中value為空值會被回收,可以設置empty字符串等),當然插入值時要替代掉空值

Redis什么是緩存穿透、擊穿、雪崩?如何解決


緩存擊穿解決方案

緩存擊穿是數(shù)據(jù)緩存沒有而數(shù)據(jù)庫有,查詢時需要進入數(shù)據(jù)庫查詢,高并發(fā)時會壓垮數(shù)據(jù)庫

有兩種解決方案:

  • 設置熱點key永不過期

  • 加互斥鎖(mutex key)

互斥鎖:在緩存失效的時候(判斷拿出來的值為空),第1個進入的線程,獲取鎖并從數(shù)據(jù)庫去取數(shù)據(jù),沒釋放鎖之前,其他并行進入的線程會等待,再重新去緩存取數(shù)據(jù)

Redis:使用setnx操作去set一個mutex key,當操作返回成功時,再進行l(wèi)oad db的操作并回設緩存;否則,就重試整個get緩存的方法。

setnx key value:當key不存在時才設置值,key存在不操作。setnx可以實現(xiàn)互斥鎖

Redis什么是緩存穿透、擊穿、雪崩?如何解決

通過互斥鎖,高并發(fā)也僅查詢一次數(shù)據(jù)庫


緩存雪崩解決方案

緩存雪崩是緩存服務器重啟或者大量緩存失效,引起數(shù)據(jù)庫壓力過大

這里的問題是多個key緩存,有兩種方案:

  • 盡量設置緩存失效時間均勻分布,別在短時間內(nèi)大量緩存過期

  • 考慮用加鎖隊列的方式來保證不會有大量的線程對數(shù)據(jù)庫一次性進行讀寫,從而避免失效時大量的并發(fā)請求數(shù)據(jù)庫(在高并發(fā)下線程阻塞,用戶體驗差)文章來源地址http://www.zghlxwxcb.cn/news/detail-493516.html

 

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

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

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

相關(guān)文章

  • [Redis]緩存穿透、緩存擊穿、緩存雪崩問題及解決方法

    緩存穿透就是指在高并發(fā)的情況下大量的請求去查詢一個不存在于緩存中的數(shù)據(jù),導致這些請求都直接訪問數(shù)據(jù)庫,給數(shù)據(jù)庫造成壓力。例如:我存儲在緩存中的key是數(shù)字類型(123),但是網(wǎng)絡攻擊者頻繁地用字符串(abc)去獲取緩存。導致永遠都無法命中緩存,請求最終都

    2024年02月15日
    瀏覽(25)
  • Redis緩存穿透、擊穿、雪崩問題及其解決方法

    Redis緩存穿透、擊穿、雪崩問題及其解決方法

    緩存穿透 :緩存穿透是指客戶端請求的數(shù)據(jù)在緩存中和數(shù)據(jù)庫中都不存在,這樣緩存永遠不會生效,這些請求都會打到數(shù)據(jù)庫。 常見的解決方案有兩種: 緩存空對象 優(yōu)點:實現(xiàn)簡單,維護方便 缺點: 額外的內(nèi)存消耗 可能造成短期的不一致 布隆過濾 優(yōu)點:內(nèi)存占用較少,

    2024年02月02日
    瀏覽(17)
  • Redis:緩存擊穿、緩存穿透與緩存雪崩的區(qū)別、解決方案

    Redis:緩存擊穿、緩存穿透與緩存雪崩的區(qū)別、解決方案

    ? ? ? ? 近期學習redis相關(guān)原理,記錄一下開發(fā)過程中Redis的一些常見問題及應對方法。 一句話總結(jié):先查 redis發(fā)現(xiàn)沒數(shù)據(jù) ,再去 數(shù)據(jù)庫查發(fā)現(xiàn)還是沒數(shù)據(jù) 。 這種情況下 緩存永遠不會生效 ,數(shù)據(jù)庫將承擔巨大壓力。 ? ? ? ? 我們知道,redis的緩存作用,是在客戶端發(fā)起查

    2024年02月06日
    瀏覽(28)
  • redis中緩存雪崩,緩存穿透,緩存擊穿的原因以及解決方案

    redis中緩存雪崩,緩存穿透,緩存擊穿的原因以及解決方案

    在redis中,新,舊數(shù)據(jù)交替時候,舊數(shù)據(jù)進行了刪除,新數(shù)據(jù)沒有更新過來,造成在高并發(fā)環(huán)境下,大量請求查詢redis沒有數(shù)據(jù),直接查詢mysql,造成mysql的壓力驟增,給mysql造成極大的壓力,造成一連串的后續(xù)異常反應。 1.大多數(shù)系統(tǒng)設計者 考慮用加鎖 (最多的解決方案)或

    2024年02月15日
    瀏覽(36)
  • Redis中的緩存雪崩、擊穿、穿透的原因以及解決辦法

    Redis中的緩存雪崩、擊穿、穿透的原因以及解決辦法

    緩存雪崩、擊穿、穿透一旦發(fā)生,會導致大量的請求積壓到數(shù)據(jù)庫層。如果請求的并發(fā)量很大,就會導致數(shù)據(jù)庫宕機或是故障,這就是很嚴重的生產(chǎn)事故了。 俗話說,知己知彼,百戰(zhàn)不殆。了解了問題的成因,我們就能夠在應用Redis緩存時,進行合理的緩存設置,以及相應的

    2024年02月12日
    瀏覽(33)
  • redis實戰(zhàn)-緩存三劍客穿透擊穿雪崩解決方案

    redis實戰(zhàn)-緩存三劍客穿透擊穿雪崩解決方案

    緩存穿透 :緩存穿透是指客戶端請求的 數(shù)據(jù)在緩存中和數(shù)據(jù)庫中都不存在 ,這樣緩存永遠不會生效,這些請求都會打到數(shù)據(jù)庫, 造成數(shù)據(jù)庫壓力 ,也讓緩存沒有發(fā)揮出應有的作用 緩存空對象 當我們客戶端訪問不存在的數(shù)據(jù)時,先請求redis,但是此時redis中沒有數(shù)據(jù),此時

    2024年02月11日
    瀏覽(29)
  • Redis中的緩存穿透、雪崩、擊穿的原因以及解決方案

    Redis中的緩存穿透、雪崩、擊穿的原因以及解決方案

    是指用戶查詢數(shù)據(jù),在數(shù)據(jù)庫沒有,自然在緩存中也不會有。這樣就導致用戶查詢的時候,在緩存中找不到,每次都要去數(shù)據(jù)庫再查詢一遍,然后返回空(相當于進行了兩次無用的查詢)。這樣請求就繞過緩存直接查數(shù)據(jù)庫,這也是經(jīng)常提的緩存命中率問題。 我們可以簡單的

    2024年02月12日
    瀏覽(21)
  • 【Redis(8)】Spring Boot整合Redis和Guava,解決緩存穿透、緩存擊穿、緩存雪崩等緩存問題

    在緩存技術(shù)的挑戰(zhàn)及設計方案我們介紹了使用緩存技術(shù)可能會遇到的一些問題,那么如何解決這些問題呢? 在構(gòu)建緩存系統(tǒng)時,Spring Boot和Redis的結(jié)合提供了強大的支持,而Guava的 LoadingCache 則為緩存管理帶來了便捷的解決方案。下面我將介紹如何通過整合Spring Boot、Redis和Gu

    2024年04月22日
    瀏覽(24)
  • Redis緩存雪崩、穿透、擊穿原因分析和解決方案,附Redis管道使用技巧

    Redis緩存雪崩、穿透、擊穿原因分析和解決方案,附Redis管道使用技巧

    先給大家附上其他幾篇文章,感興趣的自行開車導航 Redis過期策略和持久化機制全面揭秘,教你如何合理配置 【深入淺出Redis 一】從版本特性到數(shù)據(jù)類型到線程模型,帶你了解Redis的核心特性和應用場景! 一次redis OOM問題分析解決,rdbtools安裝分析redis內(nèi)存 Redis管道(pipelin

    2024年02月16日
    瀏覽(23)
  • 【Redis從入門到進階】第 6 講:緩存雪崩、擊穿、穿透場景與解決方案

    【Redis從入門到進階】第 6 講:緩存雪崩、擊穿、穿透場景與解決方案

    本文已收錄于專欄 ??《Redis從入門到進階》?? ?? 本專欄開啟,目的在于幫助大家更好的掌握學習 Redis ,同時也是為了記錄我自己學習 Redis 的過程,將會從基礎的數(shù)據(jù)類型開始記錄,直到一些更多的應用,如緩存擊穿還有分布式鎖以及 Redis 持久化等。希望大家有問題也可

    2023年04月12日
    瀏覽(233)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包