列表頁(yè)數(shù)據(jù)之異步更新緩存

1霍衫、背景介紹

all we know,所有的網(wǎng)站都有這種分頁(yè)列表们童,他們展示一些簡(jiǎn)單的數(shù)據(jù)畔况,用來(lái)讓用戶初步的篩選出他想要的東西,然后再點(diǎn)擊查看詳細(xì)信息慧库。

以簡(jiǎn)書為例

可能有人會(huì)想跷跪,為什么基礎(chǔ)信息和詳細(xì)信息需要分開呢??jī)蓚€(gè)原因

  • 列表頁(yè)只展示簡(jiǎn)單的信息齐板,一次性可以查看更多的條數(shù)
  • 只展示簡(jiǎn)單的信息吵瞻,前后端交互時(shí)響應(yīng)時(shí)間可以大大縮短

2、來(lái)自產(chǎn)品經(jīng)理的需求

??需求來(lái)了甘磨,隨之的問(wèn)題就來(lái)了橡羞,產(chǎn)品經(jīng)理總會(huì)為了用戶的體驗(yàn)而要求在列表頁(yè)加一些醒目的信息突出,而往往有些東西是需要計(jì)算得出的(如商品的折扣信息)济舆。
解決方法如下:

  • 列表頁(yè)迭代進(jìn)行計(jì)算
    按每頁(yè)10行數(shù)據(jù)來(lái)說(shuō)卿泽,一次計(jì)算按20ms來(lái)算,一頁(yè)需要多花費(fèi)200ms的時(shí)間來(lái)計(jì)算滋觉,加上rpc調(diào)用的話签夭,一個(gè)頁(yè)面上需要多花費(fèi)500ms左右的時(shí)間∽迪溃可見這個(gè)方法不可取第租。

  • 數(shù)據(jù)庫(kù)加上表或字段用于讀取
    現(xiàn)在的列表頁(yè)一般都是用搜索引擎來(lái)優(yōu)化搜索和加快響應(yīng)時(shí)間,數(shù)據(jù)庫(kù)層面的改動(dòng)牽一發(fā)而動(dòng)全身我纪,這是一個(gè)浩大的工程煌妈。這是一個(gè)最終需要使用的方案,但很難一下子完成宣羊。

  • 列表頁(yè)使用緩存
    在從搜索引擎獲取到數(shù)據(jù)后璧诵,再迭代從緩存中獲取。這是簡(jiǎn)單且能夠快速實(shí)現(xiàn)的方案了仇冯,但是又要考慮緩存失效時(shí)候的效率之宿,畢竟計(jì)算出來(lái)的東西需要更新。

3苛坚、不能接受緩存失效時(shí)的效率比被,考慮異步更新緩存

異步緩存是什么色难,即緩存的更新另開線程去做,在緩存更新之前等缀,還是返回舊的緩存數(shù)據(jù)枷莉。

  • 緩存格式
    緩存應(yīng)該是一個(gè)永久的帶有過(guò)期時(shí)間的類

  • 創(chuàng)建緩存更新線程池
    根據(jù)服務(wù)器的性能創(chuàng)建一定大小的線程池,用于更新緩存

  • 什么時(shí)候更新緩存
    當(dāng)獲取到的緩存尺迂,轉(zhuǎn)換為類后笤妙,得到過(guò)期時(shí)間在當(dāng)前時(shí)間之前,則進(jìn)行緩存更新(過(guò)期時(shí)間也相應(yīng)更新)噪裕。

  • 如何更新緩存
    單機(jī)時(shí)蹲盘,通過(guò)線程池執(zhí)行更新緩存操作。
    分布式時(shí)膳音,使用mq進(jìn)行更新緩存操作的推送召衔,消費(fèi)者通過(guò)線程池執(zhí)行緩存更新操作(當(dāng)然,也可以專門有個(gè)服務(wù)用來(lái)更新緩存)祭陷。
    不管是單機(jī)還是分布式都應(yīng)該考慮緩存更新操作時(shí)候的冪等性苍凛。

4、緩存預(yù)熱數(shù)據(jù)量太大兵志,考慮異步更新緩存

以之前說(shuō)到的計(jì)算數(shù)據(jù)為例醇蝴,因?yàn)閯偵暇€,緩存中肯定沒(méi)有相應(yīng)的數(shù)據(jù)毒姨,這時(shí)候如果大量請(qǐng)求過(guò)來(lái),服務(wù)器宕機(jī)的可能性很大(沒(méi)有做限流的前提下)钉寝。

  • 緩存預(yù)熱
    能想一下弧呐,大量的數(shù)據(jù)去進(jìn)行預(yù)熱是多么麻煩的一件事,尤其是程序員還是如此懶惰的生物嵌纲,這種耗時(shí)耗力的事情反正我是不愿意去做的emmm
  • 異步更新緩存
    結(jié)合上一點(diǎn)說(shuō)到的俘枫,不僅當(dāng)緩存類里面的過(guò)期時(shí)間到了返回舊值并異步更新緩存,我們也可以當(dāng)緩存中未取到值時(shí)逮走,返回空值并異步更新緩存鸠蚪。

5、考慮個(gè)問(wèn)題师溅,這種永久的緩存總是會(huì)越來(lái)越多茅信,到時(shí)候緩存空間不足,所以該使用什么樣的緩存驅(qū)逐策略墓臭?蘸鲸??

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末窿锉,一起剝皮案震驚了整個(gè)濱河市酌摇,隨后出現(xiàn)的幾起案子膝舅,更是在濱河造成了極大的恐慌,老刑警劉巖窑多,帶你破解...
    沈念sama閱讀 221,635評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件仍稀,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡埂息,警方通過(guò)查閱死者的電腦和手機(jī)技潘,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,543評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)耿芹,“玉大人崭篡,你說(shuō)我怎么就攤上這事“娠酰” “怎么了琉闪?”我有些...
    開封第一講書人閱讀 168,083評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)砸彬。 經(jīng)常有香客問(wèn)我颠毙,道長(zhǎng),這世上最難降的妖魔是什么砂碉? 我笑而不...
    開封第一講書人閱讀 59,640評(píng)論 1 296
  • 正文 為了忘掉前任蛀蜜,我火速辦了婚禮,結(jié)果婚禮上增蹭,老公的妹妹穿的比我還像新娘滴某。我一直安慰自己,他們只是感情好滋迈,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,640評(píng)論 6 397
  • 文/花漫 我一把揭開白布霎奢。 她就那樣靜靜地躺著,像睡著了一般饼灿。 火紅的嫁衣襯著肌膚如雪幕侠。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,262評(píng)論 1 308
  • 那天碍彭,我揣著相機(jī)與錄音晤硕,去河邊找鬼。 笑死庇忌,一個(gè)胖子當(dāng)著我的面吹牛舞箍,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播皆疹,決...
    沈念sama閱讀 40,833評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼创译,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了墙基?” 一聲冷哼從身側(cè)響起软族,我...
    開封第一講書人閱讀 39,736評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤刷喜,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后立砸,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體掖疮,經(jīng)...
    沈念sama閱讀 46,280評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,369評(píng)論 3 340
  • 正文 我和宋清朗相戀三年颗祝,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了浊闪。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,503評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡螺戳,死狀恐怖搁宾,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情倔幼,我是刑警寧澤盖腿,帶...
    沈念sama閱讀 36,185評(píng)論 5 350
  • 正文 年R本政府宣布,位于F島的核電站损同,受9級(jí)特大地震影響翩腐,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜膏燃,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,870評(píng)論 3 333
  • 文/蒙蒙 一茂卦、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧组哩,春花似錦等龙、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,340評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至幕袱,卻和暖如春暴备,著一層夾襖步出監(jiān)牢的瞬間悠瞬,已是汗流浹背们豌。 一陣腳步聲響...
    開封第一講書人閱讀 33,460評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留浅妆,地道東北人望迎。 一個(gè)月前我還...
    沈念sama閱讀 48,909評(píng)論 3 376
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像凌外,于是被迫代替她去往敵國(guó)和親辩尊。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,512評(píng)論 2 359