Redis緩存優(yōu)化

作用:加速讀寫,降低數(shù)據(jù)庫的訪問負載

存在的問題:數(shù)據(jù)不一致墓臭,緩存層和數(shù)據(jù)層有段時間不一致問題赚瘦,與更新策略有關(guān)

緩存更新策略

1.LRU/LFU/FIFO算法剔除

  • maxmemory-policy: 最大內(nèi)存剔除策略 過期鍵執(zhí)行LRU

2.超時剔除

  • expire:設(shè)置過期時間(問題是沒過期時數(shù)據(jù)變化,數(shù)據(jù)不一致)

3.主動更新

  • 開發(fā)控制生命周期轩褐,刪除緩存重新獲取數(shù)據(jù)

推薦使用更新策略:

1.低一致性:最大內(nèi)存

2.高一致性:超時與主動更新結(jié)合,最大內(nèi)存防備(避免內(nèi)存超過最大內(nèi)存出現(xiàn)問題)

緩存粒度控制
  1. 在MySQL中獲取數(shù)據(jù)如:select * from user where id={id}

  2. 設(shè)置用戶信息緩存如:set user:{id} "用戶數(shù)據(jù)"

  3. 緩存的粒度:

    • 全部屬性字段

    • 部分重要字段

比較:

  • 通用性:全量屬性更好
  • 占用空間:部分屬性更好
  • 代碼維護:表面上全量屬性更好

綜合具體數(shù)據(jù)使用不同的粒度报咳,對用戶數(shù)據(jù)容易擴展使用全量侠讯,對于開發(fā)的一些功能可能后期不會有很大變化使用部分屬性

緩存雪崩

緩存層服務(wù)異常,大量請求直接達到存儲層暑刃,造成故障厢漩,

1.保證緩存的高可用

  • 如:redis cluster, redis sentinel

2.使用隔離組件限流

  • 如:Hystrix

3.提前演練

  • 如:壓力測試

優(yōu)化io的方法:

1.命令本身優(yōu)化 如:慢查詢key hgetall

2.減少網(wǎng)絡(luò)通信的次數(shù)

3.降低接入成本 如:長連接連接池

批量優(yōu)化方法:

1.串行mget

2.串行io

  • pipeline流水線

3.并行io

  • 使用并行特性
緩存穿透

訪問的數(shù)據(jù)緩存中沒有岩臣,繼續(xù)請求存儲層溜嗜,如果存儲層也沒有數(shù)據(jù),大量請求會到存儲層加大存儲層的負載

發(fā)現(xiàn)緩存穿透:

1.業(yè)務(wù)的請求時間

2.業(yè)務(wù)出現(xiàn)問題

3.監(jiān)測指標:緩存命中數(shù)架谎,存儲層命中數(shù)炸宵,采集每分鐘的變化

解決方法:

1.緩存空對象(確定數(shù)據(jù)不存在 ,設(shè)置過期時間10min根據(jù)具體業(yè)務(wù)定 谷扣,減少storage的負載)

  • 存在的問題:

    1.需要更多的鍵(設(shè)置過期時間,避免導致后面的數(shù)據(jù)問題)

    2.緩存層與存儲層短期不一致(使用訂閱消息土全,有數(shù)據(jù)刷新緩存)

2.布隆過濾器攔截

所有的key放到布隆過濾器中,不存在的key進行攔截 会涎,需要實時更新布隆過濾器中的key

熱點key重建

熱點key訪問量大涯曲,重建的時間長,導致很多線程重建在塔,加大了存儲層負載

解決方法:

1.互斥鎖 mutex lock

  • 缺點:會有大量線程阻塞

2.永不過期

沒有設(shè)置過期時間,為每個value設(shè)置邏輯過期時間拨黔,超過邏輯過期時間使用單獨的線程去重建緩存

  • 缺點:過期到緩存重建的時間間隙數(shù)據(jù)不一致
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末蛔溃,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌贺待,老刑警劉巖徽曲,帶你破解...
    沈念sama閱讀 206,378評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異麸塞,居然都是意外死亡秃臣,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評論 2 382
  • 文/潘曉璐 我一進店門哪工,熙熙樓的掌柜王于貴愁眉苦臉地迎上來奥此,“玉大人,你說我怎么就攤上這事雁比≈苫ⅲ” “怎么了?”我有些...
    開封第一講書人閱讀 152,702評論 0 342
  • 文/不壞的土叔 我叫張陵偎捎,是天一觀的道長蠢终。 經(jīng)常有香客問我,道長茴她,這世上最難降的妖魔是什么寻拂? 我笑而不...
    開封第一講書人閱讀 55,259評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮丈牢,結(jié)果婚禮上祭钉,老公的妹妹穿的比我還像新娘。我一直安慰自己赡麦,他們只是感情好朴皆,可當我...
    茶點故事閱讀 64,263評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著泛粹,像睡著了一般遂铡。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上晶姊,一...
    開封第一講書人閱讀 49,036評論 1 285
  • 那天扒接,我揣著相機與錄音,去河邊找鬼们衙。 笑死钾怔,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的蒙挑。 我是一名探鬼主播宗侦,決...
    沈念sama閱讀 38,349評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼忆蚀!你這毒婦竟也來了矾利?” 一聲冷哼從身側(cè)響起姑裂,我...
    開封第一講書人閱讀 36,979評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎男旗,沒想到半個月后舶斧,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,469評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡察皇,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,938評論 2 323
  • 正文 我和宋清朗相戀三年茴厉,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片什荣。...
    茶點故事閱讀 38,059評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡矾缓,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出溃睹,到底是詐尸還是另有隱情而账,我是刑警寧澤,帶...
    沈念sama閱讀 33,703評論 4 323
  • 正文 年R本政府宣布因篇,位于F島的核電站泞辐,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏竞滓。R本人自食惡果不足惜咐吼,卻給世界環(huán)境...
    茶點故事閱讀 39,257評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望商佑。 院中可真熱鬧锯茄,春花似錦、人聲如沸茶没。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,262評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽抓半。三九已至喂急,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間笛求,已是汗流浹背廊移。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留探入,地道東北人狡孔。 一個月前我還...
    沈念sama閱讀 45,501評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像蜂嗽,于是被迫代替她去往敵國和親苗膝。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,792評論 2 345

推薦閱讀更多精彩內(nèi)容

  • 今天看到一位朋友寫的mysql筆記總結(jié)植旧,覺得寫的很詳細很用心荚醒,這里轉(zhuǎn)載一下芋类,供大家參考下,也希望大家能關(guān)注他原文地...
    信仰與初衷閱讀 4,725評論 0 30
  • 緩存能夠有效地加速應(yīng)用的讀寫速度界阁,同時也可以降低后端負載,對日常應(yīng)用的開發(fā)至關(guān)重要胖喳。但是將緩存加入應(yīng)用架構(gòu)后也會帶...
    super_pcm閱讀 350評論 0 0
  • Swift1> Swift和OC的區(qū)別1.1> Swift沒有地址/指針的概念1.2> 泛型1.3> 類型嚴謹 對...
    cosWriter閱讀 11,089評論 1 32
  • 一、緩存穿透預防及優(yōu)化 緩存穿透是指查詢一個根本不存在的數(shù)據(jù)技健,緩存層和存儲層都不會命中写穴,但是出于容錯的考慮,如果從...
    一只想飛的豬_85e2閱讀 1,316評論 1 15
  • 覺得腦袋像一塊石頭雌贱,像挑西瓜那樣敲一敲啊送,聽聲音——好瓜。 我的記憶已經(jīng)十分不可靠了欣孤。這讓我感到惶恐馋没。我為什么沒有把...
    槿篁閱讀 218評論 0 0