日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
緩存,究竟是淘汰,還是修改?

允許cache miss的場(chǎng)景,不管是memcache還是redis,當(dāng)被緩存的內(nèi)容變化時(shí),是改修改緩存,還是淘汰緩存?這是今天將要討論的話題。

問(wèn):KV緩存都緩存了一些什么數(shù)據(jù)?

答:

  • 樸素類(lèi)型的數(shù)據(jù),例如:int
  • 序列化后的對(duì)象,例如:User實(shí)體,本質(zhì)是binary
  • 文本數(shù)據(jù),例如:json或者h(yuǎn)tml
  • ...

問(wèn):淘汰緩存中的這些數(shù)據(jù),修改緩存中的這些數(shù)據(jù),有什么差別?

答:

  • 淘汰某個(gè)key,操作簡(jiǎn)單,直接將key置為無(wú)效,但下一次該key的訪問(wèn)會(huì)cache miss
  • 修改某個(gè)key的內(nèi)容,邏輯相對(duì)復(fù)雜,但下一次該key的訪問(wèn)仍會(huì)cache hit

可以看到,差異僅僅在于一次cache miss。

問(wèn):緩存中的value數(shù)據(jù)一般是怎么修改的?

答:

  • 樸素類(lèi)型的數(shù)據(jù),直接set修改后的值即可
  • 序列化后的對(duì)象:一般需要先get數(shù)據(jù),反序列化成對(duì)象,修改其中的成員,再序列化為binary,再set數(shù)據(jù)
  • json或者h(yuǎn)tml數(shù)據(jù):一般也需要先get文本,parse成doom樹(shù)對(duì)象,修改相關(guān)元素,序列化為文本,再set數(shù)據(jù)

結(jié)論:對(duì)于對(duì)象類(lèi)型,或者文本類(lèi)型,修改緩存value的成本較高,一般選擇直接淘汰緩存。

問(wèn):對(duì)于樸素類(lèi)型的數(shù)據(jù),究竟應(yīng)該修改緩存,還是淘汰緩存?

答:仍然視情況而定。

案例1:

假設(shè),緩存里存了某一個(gè)用戶uid=123的余額是money=100元,業(yè)務(wù)場(chǎng)景是,購(gòu)買(mǎi)了一個(gè)商品pid=456。

分析:如果修改緩存,可能需要:

  • 去db查詢pid的價(jià)格是50元
  • 去db查詢活動(dòng)的折扣是8折(商品實(shí)際價(jià)格是40元)
  • 去db查詢用戶的優(yōu)惠券是10元(用戶實(shí)際要支付30元)
  • 從cache查詢get用戶的余額是100元
  • 計(jì)算出剩余余額是100 - 30 = 70
  • 到cache設(shè)置set用戶的余額是70

為了避免一次cache miss,需要額外增加若干次db與cache的交互,得不償失。

結(jié)論:此時(shí),應(yīng)該淘汰緩存,而不是修改緩存。

案例2:

假設(shè),緩存里存了某一個(gè)用戶uid=123的余額是money=100元,業(yè)務(wù)場(chǎng)景是,需要扣減30元。

分析:如果修改緩存,需要:

  • 從cache查詢get用戶的余額是100元
  • 計(jì)算出剩余余額是100 - 30 = 70
  • 到cache設(shè)置set用戶的余額是70

為了避免一次cache miss,需要額外增加若干次cache的交互,以及業(yè)務(wù)的計(jì)算,得不償失。

結(jié)論:此時(shí),應(yīng)該淘汰緩存,而不是修改緩存。

案例3:

假設(shè),緩存里存了某一個(gè)用戶uid=123的余額是money=100元,業(yè)務(wù)場(chǎng)景是,余額要變?yōu)?0元。

分析:如果修改緩存,需要:

  • 到cache設(shè)置set用戶的余額是70

修改緩存成本很低。

結(jié)論:此時(shí),可以選擇修改緩存。當(dāng)然,如果選擇淘汰緩存,只會(huì)額外增加一次cache miss,成本也不高。

總結(jié):

允許cache miss的KV緩存寫(xiě)場(chǎng)景:

  • 大部分情況,修改value成本會(huì)高于“增加一次cache miss”,因此應(yīng)該淘汰緩存
  • 如果還在糾結(jié),總是淘汰緩存,問(wèn)題也不大

任何脫離分析的技術(shù)方案都是耍流氓。

【本文為專(zhuān)欄作者“58沈劍”原創(chuàng)稿件,轉(zhuǎn)載請(qǐng)聯(lián)系原作者】

戳這里,看該作者更多好文


分享文章:緩存,究竟是淘汰,還是修改?
網(wǎng)頁(yè)網(wǎng)址:http://www.5511xx.com/article/dhcchio.html