欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

4種常見的緩存問題及解決方案詳解

前言

成都創(chuàng)新互聯(lián)"三網(wǎng)合一"的企業(yè)建站思路。企業(yè)可建設(shè)擁有電腦版、微信版、手機(jī)版的企業(yè)網(wǎng)站。實(shí)現(xiàn)跨屏營(yíng)銷,產(chǎn)品發(fā)布一步更新,電腦網(wǎng)絡(luò)+移動(dòng)網(wǎng)絡(luò)一網(wǎng)打盡,滿足企業(yè)的營(yíng)銷需求!成都創(chuàng)新互聯(lián)具備承接各種類型的成都網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)項(xiàng)目的能力。經(jīng)過10多年的努力的開拓,為不同行業(yè)的企事業(yè)單位提供了優(yōu)質(zhì)的服務(wù),并獲得了客戶的一致好評(píng)。

使用緩存可以緩解大流量壓力,顯著提高程序的性能。我們?cè)谑褂镁彺嫦到y(tǒng)時(shí),尤其是大并發(fā)情況下,經(jīng)常會(huì)遇到一些“疑難雜癥”。本文總結(jié)了一些使用緩存時(shí)常見的問題及解決方案,以后在遇到這類問題時(shí)可以作為參考,在設(shè)計(jì)緩存系統(tǒng)的時(shí)候也應(yīng)該考慮這些常見的情況。

為了表述方便,本文以數(shù)據(jù)庫查詢緩存為例,使用緩存可以減小對(duì)數(shù)據(jù)庫的壓力。

4種常見的緩存問題及解決方案詳解

緩存穿透

我們?cè)谑褂镁彺鏁r(shí),往往先嘗試去緩存中取值,如果沒有,再去數(shù)據(jù)庫取值,如果數(shù)據(jù)庫也沒有值,則根據(jù)業(yè)務(wù)需求,返回空或者拋異常。

如果用戶一直訪問一個(gè)數(shù)據(jù)庫不存在的數(shù)據(jù),比如id為-1的數(shù)據(jù),就會(huì)導(dǎo)致每次請(qǐng)求都會(huì)先去緩存查一次,然后再去數(shù)據(jù)庫查一次,造成嚴(yán)重的性能問題。這種情況就叫緩存穿透。

解決方案

以下幾種解決方案:

  • 對(duì)請(qǐng)求參數(shù)做校驗(yàn),比如用戶鑒權(quán)校驗(yàn),id做基礎(chǔ)校驗(yàn),id <= 0的直接攔截。

  • 如果查詢到數(shù)據(jù)庫沒有值,也將對(duì)應(yīng)的key存進(jìn)緩存中,value為null。這樣下次查詢就直接從緩存返回了。但這里的key的緩存時(shí)間應(yīng)該比較短,比如30s。防止后面在數(shù)據(jù)庫插入了這條數(shù)據(jù),而用戶獲取不到。

  • 使用布隆過濾器,判斷一個(gè)key是否已經(jīng)查過了,如果已經(jīng)查過了,就不去數(shù)據(jù)庫查詢。

4種常見的緩存問題及解決方案詳解

緩存擊穿

緩存擊穿指的是,一個(gè)key的訪問量非常大,比如某秒殺活動(dòng),有1w/s的并發(fā)量。這個(gè)key在某一時(shí)刻過期,那這些大量的請(qǐng)求就會(huì)一瞬間到數(shù)據(jù)庫,數(shù)據(jù)庫可能會(huì)直接崩潰。

解決方案

緩存擊穿的解決方案也有幾種,可以配合使用:

  • 對(duì)于熱點(diǎn)數(shù)據(jù),慎重考慮過期時(shí)間,確保熱點(diǎn)期間key不會(huì)過期,甚至有些可以設(shè)置永不過期。

  • 使用互斥鎖(比如Java的多線程鎖機(jī)制),第一個(gè)線程訪問key的時(shí)候就鎖住,等查詢數(shù)據(jù)庫返回后,把值插入到緩存后再釋放鎖,這樣后面的請(qǐng)求就可以直接取緩存里面的數(shù)據(jù)了。

緩存雪崩

緩存雪崩指的是,在某一時(shí)刻,多個(gè)key失效。這樣就會(huì)有大量的請(qǐng)求從緩存中獲取不到值,全部到數(shù)據(jù)庫。還有另一種情況,就是緩存服務(wù)器宕機(jī),也算做緩存雪崩。

解決方案

針對(duì)上述兩種情況,緩存雪崩有兩種解決方案:

  • 對(duì)每個(gè)key的過期時(shí)間設(shè)置一個(gè)隨機(jī)值,而不是所有key都相同。

  • 使用高可用的分布式緩存集群,確保緩存的高可用性,比如redis-cluster。

4種常見的緩存問題及解決方案詳解

雙寫不一致

在使用數(shù)據(jù)庫緩存的時(shí)候,讀和寫的流程往往是這樣的:

  • 讀取的時(shí)候,先讀取緩存,如果緩存中沒有,就直接從數(shù)據(jù)庫中讀取,然后取出數(shù)據(jù)后放入緩存

  • 更新的時(shí)候,先刪除緩存,再更新數(shù)據(jù)庫

所謂雙寫不一致,就是在發(fā)生寫操作(更新)的時(shí)候或?qū)懖僮髦?,可能?huì)存在數(shù)據(jù)庫里面的值和緩存中的值不同的情況。

為什么更新的時(shí)候要先刪除緩存,再更新數(shù)據(jù)庫?因?yàn)槿绻雀聰?shù)據(jù)庫,然后在刪除緩存的時(shí)候失敗了,就會(huì)造成緩存里面的值和數(shù)據(jù)庫的值不一致。

然而這樣并不能完全避免雙寫不一致問題。假設(shè)在大并發(fā)情景下,一個(gè)線程先刪除緩存,然后取更新數(shù)據(jù)庫,這個(gè)時(shí)候另一個(gè)線程去取緩存,發(fā)現(xiàn)沒有值,于是去讀數(shù)據(jù)庫,然后把數(shù)據(jù)庫舊的值設(shè)置進(jìn)緩存。等第一個(gè)線程更新完數(shù)據(jù)庫后,數(shù)據(jù)庫里面就是新的值,而緩存里面是舊的值,所以就存在了數(shù)據(jù)不一致的問題。

一個(gè)比較簡(jiǎn)單的解決辦法是把過期時(shí)間設(shè)置得比較低,這樣就只有在緩存沒過期之前存在數(shù)據(jù)不一致問題,在一些業(yè)務(wù)場(chǎng)景下也還能接受。

另一種解決方案是使用隊(duì)列輔助。先更新數(shù)據(jù)庫,再刪除緩存。如果刪除失敗,就放進(jìn)隊(duì)列。然后另一個(gè)任務(wù)從隊(duì)列中取出消息,不斷去重試刪除相應(yīng)的key。

還有一種解決方案是使用對(duì)一個(gè)數(shù)據(jù)使用一個(gè)隊(duì)列,使讀寫操作串行化。比如對(duì)id為n的數(shù)據(jù)建立一個(gè)隊(duì)列。對(duì)這條數(shù)據(jù)的寫操作,刪除緩存后,放進(jìn)一個(gè)隊(duì)列;然后另一個(gè)線程過來了,發(fā)現(xiàn)沒有緩存,則把這個(gè)讀操作也放進(jìn)這個(gè)隊(duì)列里面。

歡迎大家關(guān)注我的公種浩【程序員追風(fēng)】,文章都會(huì)在里面更新,整理的資料也會(huì)放在里面。

不過這樣會(huì)增加程序的復(fù)雜性,串行化也會(huì)降低程序的吞吐量,可能得不償失。一般主流的解決方案還是先刪除緩存,再更新數(shù)據(jù)庫??梢詽M足絕大部分需求。

最后

歡迎大家一起交流,喜歡文章記得點(diǎn)個(gè)贊喲,感謝支持!

本文標(biāo)題:4種常見的緩存問題及解決方案詳解
URL網(wǎng)址:http://aaarwkj.com/article12/pcdhdc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站營(yíng)銷定制開發(fā)、微信小程序、面包屑導(dǎo)航建站公司、網(wǎng)站導(dǎo)航

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都做網(wǎng)站
欧美性极品少妇精品网站| 午夜福利主播一区二区| 亚洲成人日韩成人av| 清纯唯美亚洲自拍第一页| 午夜午色夜之日本福利片| 亚洲av成人在线一区二区| 亚洲福利视频在线观看免费 | 亚洲欧美一区二区三区三| 熟女高潮av一区二区| 色呦呦中文字幕在线播放| 久久国内午夜福利直播| 国产成年人拍拍免费视频| 久久精品亚洲精品国产| 中文字幕在线精品乱码| 亚洲巨人精品福利导航| 日本不卡一区二区三区四| 久久精品国产亚洲av高清观看| 国产精品国产三级丝袜| 农村精品少妇久久久久久| 性激烈的欧美三级男同| 亚洲一区日韩精品电影| 日本少妇人妻一区二区| 中文字幕在线视频黄字幕| 免费观看黄片视频在线观看| 国产亚洲无线码一区二区| 亚洲一级香蕉视频东京热| 日本成人午夜电影网站| av在线日韩国产精品| 亚洲欧美韩国日本成人综合| 囗交囗爆吞精在线视频| 羞羞av一区二区三区| 日韩日韩毛片日韩毛片| 在线成人免费日韩视频| 国产白浆一区二区视频| 亚洲一区二区福利视频| av在线观看亚洲天堂| 日本一区二区三区在线观看视频| 免费国产网站在线观看不卡| 中文字幕人妻中文av不卡专区| 中文字幕国产精品一区二| 精品少妇高潮蜜臀av|