五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

淺談Redis緩存刷新策略(IT楓斗者)

2023-04-03 15:30 作者:IT楓斗者-跳蚤網(wǎng)  | 我要投稿

引言:使用Redis緩存的目的就是提升讀寫性能。而實(shí)際業(yè)務(wù)場(chǎng)景下,更多的是為了提升讀性能,帶來(lái)更高的并發(fā)量。

一,Redis緩存刷新策略

  • 算法剔除

    redis自動(dòng)進(jìn)行,當(dāng)redis內(nèi)存達(dá)到開(kāi)始設(shè)定的max-memery的時(shí)候會(huì)自動(dòng)觸發(fā)淘汰機(jī)制,淘汰掉一些不重要的數(shù)據(jù)。

  • 超時(shí)剔除

    當(dāng)我們給redis設(shè)置了過(guò)期時(shí)間ttl之后,redis會(huì)將超時(shí)的數(shù)據(jù)進(jìn)行刪除,方便咱們繼續(xù)使用緩存。

  • 主動(dòng)更新

    我們可以手動(dòng)調(diào)用方法把緩存刪掉,通常用于解決緩存和數(shù)據(jù)庫(kù)不一致問(wèn)題。

主動(dòng)更新又分三種方式:

  • 緩存的調(diào)用者,在更新數(shù)據(jù)庫(kù)的同時(shí)更新緩存。

  • 緩存和數(shù)據(jù)庫(kù)整合為一個(gè)服務(wù),由服務(wù)來(lái)維護(hù)一致性。調(diào)用者調(diào)用該服務(wù),無(wú)需關(guān)系緩存一致性問(wèn)題。

  • 調(diào)用者只操作緩存,有其他線程異步的將緩存持久化到數(shù)據(jù)庫(kù),保證最終一致。

如果采用第一個(gè)方案,假設(shè)我們每次操作數(shù)據(jù)庫(kù)后,都操作緩存,但是中間如果沒(méi)有人查詢,那么這個(gè)更新動(dòng)作實(shí)際上只有最后一次生效,中間的更新動(dòng)作意義并不大,我們可以把緩存刪除,等待再次查詢時(shí),將緩存中的數(shù)據(jù)加載出來(lái)。

  • 刪除緩存還是更新緩存?

  1. 刪除緩存:更新數(shù)據(jù)庫(kù)時(shí)讓緩存失效,查詢時(shí)再更新緩存

  2. 更新緩存:每次更新數(shù)據(jù)庫(kù)都更新緩存,無(wú)效寫操作較多

  • 如何保證緩存與數(shù)據(jù)庫(kù)的操作的同時(shí)成功或失?。?/span>

  1. 單體系統(tǒng),將緩存與數(shù)據(jù)庫(kù)操作放在一個(gè)事務(wù)

  2. 分布式系統(tǒng),利用TCC等分布式事務(wù)方案

  • 先操作緩存還是先操作數(shù)據(jù)庫(kù)?

  1. 先刪除緩存,再操作數(shù)據(jù)庫(kù) (第一種方案)

  2. 先操作數(shù)據(jù)庫(kù),再刪除緩存

應(yīng)該具體操作緩存還是操作數(shù)據(jù)庫(kù),我們應(yīng)當(dāng)是先操作數(shù)據(jù)庫(kù),再刪除緩存,原因在于,如果你選擇第一種方案,在兩個(gè)線程并發(fā)來(lái)訪問(wèn)時(shí),假設(shè)線程1先來(lái),他先把緩存刪了,此時(shí)線程2過(guò)來(lái),他查詢緩存數(shù)據(jù)并不存在,此時(shí)他寫入緩存,當(dāng)他寫入緩存后,線程1再執(zhí)行更新動(dòng)作時(shí),實(shí)際上寫入的就是舊的數(shù)據(jù),新的數(shù)據(jù)被舊數(shù)據(jù)覆蓋了。

  • redis的讀寫是微秒級(jí)別的,但是數(shù)據(jù)庫(kù)的更新是遠(yuǎn)遠(yuǎn)比redis的讀寫慢的。
    三種刷新策略的對(duì)比:

二,緩存刷新策略的實(shí)踐方案:

  1. 低一致性需求:配置最大內(nèi)存和使用Redis自帶的內(nèi)存淘汰機(jī)制

  2. 高一致性需求:使用主動(dòng)更新和超時(shí)剔除。主動(dòng)更新出了問(wèn)題,超時(shí)剔除也能做兜底方案

  • 讀操作:

    緩存命中則直接返回。

    緩存未命中則查詢數(shù)據(jù)庫(kù),并寫入緩存,設(shè)定超時(shí)時(shí)間。

  • 寫操作:

    先寫數(shù)據(jù)庫(kù),然后再刪除緩存。

    但要確保數(shù)據(jù)庫(kù)與緩存操作的原子性。


淺談Redis緩存刷新策略(IT楓斗者)的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
安远县| 察雅县| 定州市| 曲麻莱县| 资阳市| 卫辉市| 西乌珠穆沁旗| 那曲县| 南昌市| 东光县| 手机| 邛崃市| 盐池县| 金门县| 萝北县| 克拉玛依市| 德庆县| 天气| 冷水江市| 四川省| 祁阳县| 沧州市| 博兴县| 青海省| 东乡| 牟定县| 隆子县| 贞丰县| 广汉市| 大兴区| 大丰市| 遂川县| 定陶县| 绥滨县| 商南县| 太仆寺旗| 普兰县| 四会市| 黄陵县| 郑州市| 宜兰县|