日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長提供免費收錄網(wǎng)站服務(wù),提交前請做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(wù)(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

緩存在架構(gòu)設(shè)計中占有重要地位。緩存在提升性能中也扮演重要的角色。常見的有對資源的緩存,比如數(shù)據(jù)庫連接池、http連接池,還有對數(shù)據(jù)的緩存等。緩存的設(shè)計可復(fù)雜也可簡單,但是需要考慮的點卻很多。

緩存對象

設(shè)計緩存的時候一定要考慮的是,緩存的對象是什么,緩存哪些對象。緩存對象一定是熱數(shù)據(jù),也就是頻繁被訪問。把對象加載到內(nèi)存是以犧牲內(nèi)存為代價的,如果緩存的對象不經(jīng)常訪問,那么就是在浪費內(nèi)存,并且不但不會提升性能,還會因為命中率低的原因降低性能。

緩存的大小

因為內(nèi)存是有限的,所以緩存不能無限大,那么就要決定緩存多少數(shù)據(jù)以保證內(nèi)存不被撐爆。

緩存一致性

緩存一致性是必須要考慮的點。很多緩存設(shè)計都忘記了這一點,導(dǎo)致在使用緩存的時候經(jīng)常返回過期數(shù)據(jù)。數(shù)據(jù)在更新的時候,緩存可以采用如下幾個策略:1.將緩存中的數(shù)據(jù)設(shè)置為無效或者刪除,再次查詢的時候重新去數(shù)據(jù)庫查詢并更新緩存;2.更新數(shù)據(jù)時,先更新緩存,再更新數(shù)據(jù)庫或者先更新緩存之后異步刷新到數(shù)據(jù)庫;3.直接更新數(shù)據(jù)庫,緩存定期去數(shù)據(jù)庫同步最新數(shù)據(jù),這種方式需要容忍一定時間內(nèi)的不一致。緩存刷新策略一定要明確。作者本人在工作中遇到過這種情況:更新數(shù)據(jù)的接口有兩個,其中一個更新緩存后更新數(shù)據(jù)庫,另一個直接去更新的數(shù)據(jù)庫,由于沒有同步機制,導(dǎo)致總是偶現(xiàn)數(shù)據(jù)不一致的情況,而且只能重啟來規(guī)避。

緩存在哪里

對于緩存數(shù)據(jù)的存儲位置也是需要考慮的。如果是分布式系統(tǒng)或者近期會重構(gòu)成分布式的系統(tǒng),緩存需要集中存儲,比如使用redis做緩存。如果是單機系統(tǒng),最簡單的方式就是緩存到內(nèi)存中。緩存的存儲位置的訪問一定要快于數(shù)據(jù)的存儲位置,不然緩存就沒有意義了。

緩存流程

架構(gòu):緩存設(shè)計

緩存流程

經(jīng)典緩存問題

1.緩存穿透

緩存穿透是指客戶端訪問即不在緩存中的數(shù)據(jù)又不在數(shù)據(jù)庫中的數(shù)據(jù)。這種訪問過多會導(dǎo)致數(shù)據(jù)庫掛掉影響正常訪問。對于這種問題,可以在數(shù)據(jù)訪問前做校驗,過濾掉不存在的數(shù)據(jù)訪問,必須不合法的查詢字段或者使用布隆過濾器,篩選掉不存在的數(shù)據(jù);也可以將不存在的數(shù)據(jù)在緩存中建立空值緩存。

2.緩存擊穿

緩存擊穿是指客戶端訪問不在緩存中但數(shù)據(jù)庫中存在的數(shù)據(jù)。如果對某個key的訪問量很大,這個時候緩存過期了,那么就會有很多的訪問漏到數(shù)據(jù)庫層面去訪問數(shù)據(jù)。這個問題可以采用如下方法解決:熱點數(shù)據(jù)常駐緩存;訪問在緩存中沒有拿到數(shù)據(jù),在需要去數(shù)據(jù)庫中訪問數(shù)據(jù)時加鎖處理,只漏過一個訪問去數(shù)據(jù)庫查詢數(shù)據(jù),并將數(shù)據(jù)更新到緩存,其他訪問加鎖失敗,后續(xù)從緩存中取數(shù)據(jù)。

3.緩存雪崩

緩存雪崩是指大量的key過期,導(dǎo)致訪問落到數(shù)據(jù)庫上。這個問題的解決方法如下:1.每個緩存數(shù)據(jù)設(shè)置不同的緩存時間,避免大量的緩存同時過期;2.添加的節(jié)點預(yù)熱。在需要添加緩存節(jié)點的時候,先做緩存預(yù)熱,避免大量訪問未命中的情況;3.對于熱點數(shù)據(jù)的判斷采用延遲的策略。在訪問緩存中不存在的數(shù)據(jù)的時候,不直接將它設(shè)置成最熱數(shù)據(jù),而是設(shè)置到緩存數(shù)據(jù)按熱度排序中間的位置,避免某一時刻大量訪問冷數(shù)據(jù)導(dǎo)致熱數(shù)據(jù)被剔除緩存的情況。

建議

不建議在架構(gòu)設(shè)計的最初階段就采用緩存。首先,采用緩存容易掩蓋一些問題,比如業(yè)務(wù)邏輯導(dǎo)致的性能低下在由于緩存的存在在初期不容易暴露;再有就是在最初階段有的時候很難去判斷什么是熱數(shù)據(jù)什么是冷數(shù)據(jù),需要緩存什么;如果已經(jīng)確定要在系統(tǒng)中引入緩存那么一定要考慮好上面的幾點。

分享到:
標簽:架構(gòu)
用戶無頭像

網(wǎng)友整理

注冊時間:

網(wǎng)站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨大挑戰(zhàn)2018-06-03

數(shù)獨一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學(xué)四六

運動步數(shù)有氧達人2018-06-03

記錄運動步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績評定2018-06-03

通用課目體育訓(xùn)練成績評定