成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

緩存,究竟是淘汰,還是修改?

開發 開發工具 前端
允許cache miss的場景,不管是memcache還是redis,當被緩存的內容變化時,是改修改緩存,還是淘汰緩存?這是今天將要討論的話題。

允許cache miss的場景,不管是memcache還是redis,當被緩存的內容變化時,是改修改緩存,還是淘汰緩存?這是今天將要討論的話題。

[[235427]]

問:KV緩存都緩存了一些什么數據?

答:

  • 樸素類型的數據,例如:int
  • 序列化后的對象,例如:User實體,本質是binary
  • 文本數據,例如:json或者html
  • ...

問:淘汰緩存中的這些數據,修改緩存中的這些數據,有什么差別?

答:

  • 淘汰某個key,操作簡單,直接將key置為無效,但下一次該key的訪問會cache miss
  • 修改某個key的內容,邏輯相對復雜,但下一次該key的訪問仍會cache hit

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

問:緩存中的value數據一般是怎么修改的?

答:

  • 樸素類型的數據,直接set修改后的值即可
  • 序列化后的對象:一般需要先get數據,反序列化成對象,修改其中的成員,再序列化為binary,再set數據
  • json或者html數據:一般也需要先get文本,parse成doom樹對象,修改相關元素,序列化為文本,再set數據

結論:對于對象類型,或者文本類型,修改緩存value的成本較高,一般選擇直接淘汰緩存。

問:對于樸素類型的數據,究竟應該修改緩存,還是淘汰緩存?

答:仍然視情況而定。

案例1:

假設,緩存里存了某一個用戶uid=123的余額是money=100元,業務場景是,購買了一個商品pid=456。

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

  • 去db查詢pid的價格是50元
  • 去db查詢活動的折扣是8折(商品實際價格是40元)
  • 去db查詢用戶的優惠券是10元(用戶實際要支付30元)
  • 從cache查詢get用戶的余額是100元
  • 計算出剩余余額是100 - 30 = 70
  • 到cache設置set用戶的余額是70

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

結論:此時,應該淘汰緩存,而不是修改緩存。

案例2:

假設,緩存里存了某一個用戶uid=123的余額是money=100元,業務場景是,需要扣減30元。

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

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

為了避免一次cache miss,需要額外增加若干次cache的交互,以及業務的計算,得不償失。

結論:此時,應該淘汰緩存,而不是修改緩存。

案例3:

假設,緩存里存了某一個用戶uid=123的余額是money=100元,業務場景是,余額要變為70元。

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

  • 到cache設置set用戶的余額是70

修改緩存成本很低。

結論:此時,可以選擇修改緩存。當然,如果選擇淘汰緩存,只會額外增加一次cache miss,成本也不高。

總結:

允許cache miss的KV緩存寫場景:

  • 大部分情況,修改value成本會高于“增加一次cache miss”,因此應該淘汰緩存
  • 如果還在糾結,總是淘汰緩存,問題也不大

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

【本文為51CTO專欄作者“58沈劍”原創稿件,轉載請聯系原作者】

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

責任編輯:趙寧寧 來源: 51CTO專欄
相關推薦

2011-02-28 09:51:43

內省

2010-06-28 14:47:45

云計算

2012-08-20 10:34:07

軟件開發開發軟件

2016-11-01 15:16:52

QQ狀態即時通訊

2021-01-05 09:23:49

網頁端消息

2024-10-18 14:43:31

2019-04-26 13:55:02

Istio微服務架構

2009-05-06 16:10:17

Java傳值引用

2019-10-21 13:58:22

爬蟲互聯網程序員

2011-02-16 16:13:40

Debian

2020-05-07 10:53:04

人工智能技術開發

2020-05-06 18:32:37

人工智能AI制藥

2019-02-14 10:10:11

系統廠商芯片

2022-10-19 12:23:50

緩存CDN外部緩存

2020-06-11 09:18:34

動靜分離架構架構設計開發

2019-06-04 14:15:08

JavaScript V8前端

2019-07-22 15:29:53

JavaScriptGitHub語言

2010-08-24 09:19:59

2018-05-30 15:29:56

2017-08-16 09:13:27

共享充電
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产高潮好爽受不了了夜夜做 | 人人爽人人草 | 人人爽人人爽人人片av | 日韩中文视频 | 在线播放中文字幕 | 免费在线一区二区三区 | www久久99 | 中文字幕一区二区三区四区 | 久久久www成人免费无遮挡大片 | 免费看a| 91精品国产综合久久久亚洲 | 狠狠插天天干 | 欧美日韩亚洲在线 | 国产一区影院 | 成人精品鲁一区一区二区 | 91性高湖久久久久久久久_久久99 | 色秀网站 | 亚洲国产精品一区二区第一页 | 亚洲国产精品成人 | 99精品久久久久久 | 久久久精品影院 | 美女视频一区 | av第一页| 国产精品一区二区无线 | 成年女人免费v片 | 伊人伊成久久人综合网站 | 欧美精品一区二区在线观看 | 日韩一级二级片 | 久草视频在线播放 | 国产精品一区二区视频 | 一区二区免费 | 亚洲精品www | 欧美乱操| 日韩欧美在线观看 | 99热.com | 亚洲精品一区二区三区免 | 激情毛片 | 狠狠干天天干 | 奇米影视77 | 久久亚洲天堂 | 欧美黄色网络 |