最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Redis中緩存穿透/擊穿/雪崩問(wèn)題和解決方法

 更新時(shí)間:2021年12月03日 09:27:03   作者:靜靜子?  
大家好,本篇文章主要講的是Redis中緩存穿透/擊穿/雪崩問(wèn)題和解決方法,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話(huà)記得收藏一下哦,方便下次瀏覽

緩存問(wèn)題

1. 緩存穿透---查不到

緩存穿透是指用戶(hù)想查詢(xún)一個(gè)數(shù)據(jù),發(fā)現(xiàn)Redis中沒(méi)有,也就是緩存沒(méi)有命中,就向持久性數(shù)據(jù)庫(kù)發(fā)起查詢(xún),發(fā)現(xiàn)數(shù)據(jù)庫(kù)也沒(méi)有這個(gè)數(shù)據(jù),于是查詢(xún)失敗了。

當(dāng)用戶(hù)請(qǐng)求很多的情況下,緩存沒(méi)有命中,數(shù)據(jù)庫(kù)也沒(méi)有數(shù)據(jù),會(huì)給數(shù)據(jù)庫(kù)造成很大的壓力,這就是緩存穿透。

解決方案

第一種解決方案:使用布隆過(guò)濾器

使用布隆過(guò)濾器之后,將存儲(chǔ)的數(shù)據(jù)放入布隆過(guò)濾器中,每次數(shù)據(jù)查詢(xún)首先查詢(xún)布隆過(guò)濾器,當(dāng)在過(guò)濾器中判斷存在時(shí),再到緩存查詢(xún),如果沒(méi)有,再進(jìn)入數(shù)據(jù)查詢(xún)。

如果在布隆過(guò)濾器中不存在,則直接返回告訴用戶(hù)該數(shù)據(jù)查不到,這樣能大大減輕數(shù)據(jù)庫(kù)查詢(xún)壓力。

第二種方案:緩存空對(duì)象

當(dāng)數(shù)據(jù)庫(kù)數(shù)據(jù)不存在時(shí),將返回的空對(duì)象緩存起來(lái),同時(shí)設(shè)置一個(gè)過(guò)期時(shí)間,之后在訪(fǎng)問(wèn)數(shù)據(jù)時(shí),將從緩存中獲取,從而保護(hù)了數(shù)據(jù)庫(kù)。

存在問(wèn)題:

對(duì)空值設(shè)置過(guò)期時(shí)間,會(huì)存在更新數(shù)據(jù)庫(kù)數(shù)據(jù)到緩存數(shù)據(jù)失效的這一段時(shí)間,緩存數(shù)據(jù)有問(wèn)題(問(wèn)題在于緩存的空對(duì)象數(shù)據(jù),由于還沒(méi)有過(guò)期,但此時(shí)數(shù)據(jù)庫(kù)數(shù)據(jù)已經(jīng)更新了),會(huì)對(duì)要保證數(shù)據(jù)一致性的業(yè)務(wù)造成影響。會(huì)需要更多的空間來(lái)存儲(chǔ)更多的控制,造成內(nèi)存中有大量的空值的鍵。

2. 緩存擊穿---量太大,緩存過(guò)期

緩存擊穿是指一個(gè)熱點(diǎn)key,在不停的扛著大量的并發(fā),當(dāng)key在失效的瞬間,持續(xù)的大并發(fā)就會(huì)穿破緩存,直接請(qǐng)求到數(shù)據(jù)庫(kù)。對(duì)數(shù)據(jù)庫(kù)造成瞬間壓力過(guò)大。

解決方案

第一種方案:熱點(diǎn)數(shù)據(jù)永不過(guò)期

從緩存角度看,沒(méi)有設(shè)置過(guò)期時(shí)間,就不會(huì)存在緩存過(guò)期之后產(chǎn)生的問(wèn)題。

第二種方案:加互斥鎖

使用分布式鎖,保證對(duì)每個(gè)key的訪(fǎng)問(wèn)同一時(shí)刻只能一個(gè)線(xiàn)程去查詢(xún)后端服務(wù),其他沒(méi)有獲取鎖權(quán)限的線(xiàn)程則等待即可。

3. 緩存雪崩

緩存雪崩是指在某一個(gè)時(shí)間段,緩存集中過(guò)期失效或者Redis宕機(jī)

對(duì)于數(shù)據(jù)庫(kù)而言,所有請(qǐng)求壓力會(huì)全部到達(dá)數(shù)據(jù)庫(kù),導(dǎo)致數(shù)據(jù)庫(kù)調(diào)用量暴增,可能也造成數(shù)據(jù)庫(kù)宕機(jī)的情況

解決方案

第一種方案(預(yù)防為主):Redis采用高可用

這種方案的思路就是集群使用,即使一個(gè)redis掛掉,其他redis還可以繼續(xù)服務(wù)。

第二種方案(降低發(fā)生時(shí)所造成的危害):限流降級(jí)

這種思路就是在緩存失效后,通過(guò)加鎖或者隊(duì)列來(lái)控制讀取數(shù)據(jù)庫(kù)的線(xiàn)程數(shù)量讓線(xiàn)程在隊(duì)列排隊(duì),控制整體請(qǐng)請(qǐng)求速率。

第三種方案:數(shù)據(jù)預(yù)熱

數(shù)據(jù)預(yù)熱即是在正式部署服務(wù)之前,先訪(fǎng)問(wèn)一遍數(shù)據(jù),可以將大部分的數(shù)據(jù)加載到緩存中,在即將發(fā)生大并發(fā)之前已經(jīng)加載不同的key,設(shè)置不同的過(guò)期時(shí)間,讓緩存失效的時(shí)間更加均勻。

到此這篇關(guān)于Redis中緩存穿透/擊穿/雪崩問(wèn)題和解決方法的文章就介紹到這了,更多相關(guān)Redis緩存穿透/擊穿/雪崩問(wèn)題內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Redis整合SpringBoot的RedisTemplate實(shí)現(xiàn)類(lèi)(實(shí)例詳解)

    Redis整合SpringBoot的RedisTemplate實(shí)現(xiàn)類(lèi)(實(shí)例詳解)

    這篇文章主要介紹了Redis整合SpringBoot的RedisTemplate實(shí)現(xiàn)類(lèi),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-01-01
  • Redis實(shí)現(xiàn)分布式鎖的實(shí)例講解

    Redis實(shí)現(xiàn)分布式鎖的實(shí)例講解

    在本篇文章里小編給大家整理了一篇關(guān)于Redis實(shí)現(xiàn)分布式鎖的實(shí)例講解內(nèi)容,有興趣的朋友們可以學(xué)習(xí)參考下。
    2021-12-12
  • redis禁止幾個(gè)危險(xiǎn)命令的方法

    redis禁止幾個(gè)危險(xiǎn)命令的方法

    今天小編就為大家分享一篇redis禁止幾個(gè)危險(xiǎn)命令的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-05-05
  • Redis在項(xiàng)目中常見(jiàn)的12種使用場(chǎng)景示例和說(shuō)明

    Redis在項(xiàng)目中常見(jiàn)的12種使用場(chǎng)景示例和說(shuō)明

    Redis是一個(gè)開(kāi)源的高性能鍵值對(duì)數(shù)據(jù)庫(kù),它以其內(nèi)存中數(shù)據(jù)存儲(chǔ)、鍵過(guò)期策略、持久化、事務(wù)、豐富的數(shù)據(jù)類(lèi)型支持以及原子操作等特性,在許多項(xiàng)目中扮演著關(guān)鍵角色,以下是整理的12個(gè)Redis在項(xiàng)目中常見(jiàn)的使用場(chǎng)景舉例說(shuō)明和解釋
    2024-06-06
  • 如何操作Redis和zookeeper實(shí)現(xiàn)分布式鎖

    如何操作Redis和zookeeper實(shí)現(xiàn)分布式鎖

    這篇文章主要介紹了如何操作Redis和zookeeper實(shí)現(xiàn)分布式鎖的相關(guān)資料,需要的朋友可以參考下
    2017-07-07
  • Redis IP地址的綁定的實(shí)現(xiàn)

    Redis IP地址的綁定的實(shí)現(xiàn)

    這篇文章主要介紹了Redis IP地址的綁定的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-05-05
  • redis鍵空間通知使用實(shí)現(xiàn)

    redis鍵空間通知使用實(shí)現(xiàn)

    這篇文章主要介紹了redis鍵空間通知使用實(shí)現(xiàn)
    2021-08-08
  • redis安裝和配置_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    redis安裝和配置_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    這篇文章主要介紹了redis安裝和配置,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-08-08
  • Redis緩沖區(qū)溢出及解決方案分享

    Redis緩沖區(qū)溢出及解決方案分享

    Redis緩沖區(qū)溢出是指Redis緩沖區(qū)被寫(xiě)入的數(shù)據(jù)超過(guò)了它的容量,導(dǎo)致數(shù)據(jù)無(wú)法存儲(chǔ)或被覆蓋。造成緩沖區(qū)溢出的原因可能是快速寫(xiě)入大量數(shù)據(jù)、緩沖區(qū)未及時(shí)刷新或Redis服務(wù)器配置不當(dāng)?shù)取?/div> 2023-04-04
  • Redis報(bào)錯(cuò)UnrecognizedPropertyException: Unrecognized field問(wèn)題

    Redis報(bào)錯(cuò)UnrecognizedPropertyException: Unrecognized 

    在使用SpringBoot訪(fǎng)問(wèn)Redis時(shí),報(bào)錯(cuò)提示識(shí)別不了屬性headPart,經(jīng)過(guò)排查,發(fā)現(xiàn)并非Serializable或getset方法問(wèn)題,而是存在一個(gè)方法getHeadPart,但無(wú)headPart屬性,解決方案是將getHeadPart改為makeHeadPart
    2024-10-10

最新評(píng)論

肥城市| 年辖:市辖区| 清新县| 迁安市| 清原| 宜兰县| 永善县| 广丰县| 抚远县| 栾城县| 江达县| 上虞市| 尼玛县| 海宁市| 新田县| 长春市| 平阴县| 伽师县| 盘锦市| 宁安市| 汕尾市| 扶沟县| 延川县| 花莲市| 巴青县| 禹州市| 平阳县| 威宁| 搜索| 台中县| 武陟县| 吉林省| 龙州县| 沽源县| 自贡市| 登封市| 太保市| 渭南市| 湘乡市| 青川县| 边坝县|