亚洲人成色在线观看,亚洲人成网亚洲欧洲无码久久,亚洲av日韩av天堂久久,亚洲爆乳精品无码一区二区,亚洲av永久无码精品网站色欲

歡迎您來(lái)到縱橫數(shù)據(jù),開(kāi)始互聯(lián)網(wǎng)之旅!

  • 微信
    咨詢
    微信在線咨詢 服務(wù)時(shí)間:9:00-18:00
    縱橫數(shù)據(jù)官方微信 使用微信掃一掃
    馬上在線溝通
  • 業(yè)務(wù)
    咨詢

    QQ在線咨詢 服務(wù)時(shí)間:9:00-18:00

    選擇下列產(chǎn)品馬上在線溝通

    縱橫售前-老古
    QQ:519082853 售前電話:18950029581
    縱橫售前-江夏
    QQ:576791973 售前電話:19906048602
    縱橫售前-小李
    QQ:3494196421 售前電話:19906048601
    縱橫售前-小智
    QQ:2732502176 售前電話:17750597339
    縱橫售前-燕子
    QQ:609863413 售前電話:17750597993
    縱橫值班售后
    QQ:407474592 售后電話:400-1886560
    縱橫財(cái)務(wù)
    QQ:568149701 售后電話:18965139141

    售前咨詢熱線:

    400-188-6560

    業(yè)務(wù)姚經(jīng)理:18950029581

  • 關(guān)注

    關(guān)于縱橫數(shù)據(jù) 更多優(yōu)惠活動(dòng)等您來(lái)拿!
    縱橫數(shù)據(jù)官方微信 掃一掃關(guān)注官方微信
  • 關(guān)閉
  • 頂部
  • 您所在的位置 : 首頁(yè) > 新聞公告 > web緩存入門(mén)了解

    web緩存入門(mén)了解

    什么樣的緩存才是好緩存?

    能解決問(wèn)題的緩存就是好緩存。這句話簡(jiǎn)直就是廢話,相當(dāng)于白貓、黑貓,抓住老鼠的就是好貓。

    那在解決問(wèn)題前提下,哪個(gè)緩存才是好緩存呢? 這個(gè)問(wèn)題我的答案是:緩存命中率高的緩存是好緩存。

    在解決問(wèn)題前提下,命中率高的緩存比命中率低的緩存,在硬件投入上可能會(huì)比較小,同時(shí)緩存的數(shù)量比命中率低的緩存數(shù)量也可能少,這樣尋址的速度 肯定比較快。所以命中率高的緩存是好緩存。


    緩存的命中率

    一個(gè)緩存的實(shí)體在被丟到緩存中后,在這個(gè)實(shí)體被緩存的期間(這個(gè)實(shí)體被緩存的生命周期內(nèi)),如果外部一次都沒(méi)有使用過(guò)它,這個(gè)緩存實(shí)體的命中率 就是0。這個(gè)實(shí)體被請(qǐng)求的次數(shù)越多,它的緩存命中率越高。

    上面說(shuō)的是緩存中一個(gè)實(shí)體的命中率。對(duì)于緩存整體來(lái)說(shuō),它的命中率則是上面各個(gè)被緩存的個(gè)體的命中率分布圖。

    對(duì)于緩存來(lái)說(shuō):通常最常使用的個(gè)體之占總體的很小一部分。最不常使用的占整體的很大一部分。


    所以我們經(jīng)常會(huì)看到類(lèi)似這樣的數(shù)據(jù):

    緩存的1萬(wàn)個(gè)元素中,有100個(gè)被頻繁的使用,幾乎每分鐘都會(huì)被使用一次。2000個(gè)數(shù)據(jù),每小時(shí)被請(qǐng)求一次。3000個(gè)數(shù)據(jù),每天被請(qǐng)求一 次,剩下的數(shù)據(jù),被丟到緩存中后一次都沒(méi)有被使用過(guò)。

    現(xiàn)在硬件發(fā)展很快,如果我們只是需要緩存1萬(wàn)個(gè)數(shù)據(jù)的話,我們完全可以做到不管這1萬(wàn)個(gè)數(shù)據(jù)是否被使用到,全部丟到緩存,這樣只要找數(shù)據(jù),肯定 緩存中有這個(gè)數(shù)據(jù)。而不需要作額外的運(yùn)算,或者不需要向數(shù)據(jù)庫(kù)發(fā)出請(qǐng)求。

    但是:硬件發(fā)展快,數(shù)據(jù)量發(fā)展也快。小型的網(wǎng)站,緩存1萬(wàn)條數(shù)據(jù),也就全部緩存了。但是大型網(wǎng)站最少也是上百萬(wàn)的數(shù)據(jù)量或者上T級(jí)別的數(shù)據(jù),這 些數(shù)據(jù)量顯然不能都丟到緩存。這時(shí)候設(shè)計(jì)一個(gè)合理的緩存方案,提高緩存的命中率,就非常重要。而且是必須的。

    提高緩存命中率的一些常見(jiàn)方法

    純技術(shù)的角度來(lái)說(shuō),我們只有記錄了用戶的單位時(shí)間的請(qǐng)求數(shù),并依照這個(gè)信息來(lái)把最常被使用的數(shù)據(jù)緩存起來(lái)。

    但更多的時(shí)候,我們是根據(jù)業(yè)務(wù)邏輯來(lái)提高緩存命中率的。比如:去年,前年發(fā)表的博客,這類(lèi)文章的瀏覽請(qǐng)求,一般一天至少可憐的幾次。一般不應(yīng)該 緩存到內(nèi)存中。

    又比如,回復(fù)數(shù)多的帖子,一般被請(qǐng)求數(shù)會(huì)比回復(fù)數(shù)少的帖子會(huì)被更多人次看到。

    我們應(yīng)該通過(guò)上面邏輯,根據(jù)我們實(shí)際業(yè)務(wù)邏輯,提供一個(gè)緩存算法,提高緩存的命中率。讓在我們硬件允許的條件下,緩存適當(dāng)?shù)臄?shù)據(jù),而不是所有數(shù) 據(jù)。

    一個(gè)反面的例子就是:不管三七二十一,一個(gè)大型的博客站點(diǎn),一篇文章被用戶請(qǐng)求的時(shí)候,發(fā)現(xiàn)不在內(nèi)存緩存中,就從數(shù)據(jù)庫(kù)中讀出,然后丟到緩存。

    要知道,現(xiàn)在爬蟲(chóng)程序很多的。另外,博客這類(lèi)搜索引擎友好的站點(diǎn),決大多數(shù)的訪問(wèn)壓力是搜索引擎搜索過(guò)來(lái)的。而這些訪問(wèn)一般都是1小時(shí),或者1 天之內(nèi),對(duì)某篇文章只有幾次甚至1次請(qǐng)求,之后再也沒(méi)有了。上面作緩存的方法,命中率會(huì)非常低的。

    這里也許就有人會(huì)問(wèn),郭紅俊,既然你不建議我緩存這些博客的內(nèi)容,但是我如何提高我站點(diǎn)的性能呀,我至少得保證我博客站點(diǎn)不會(huì)速度慢的無(wú)法響應(yīng) 用戶請(qǐng)求呀。

    這個(gè)問(wèn)題的解決方案有很多,一個(gè)最簡(jiǎn)單的方法就是把這些博客做成靜態(tài)Html頁(yè)面,也就是文件系統(tǒng)的緩存,文件系統(tǒng)因?yàn)橛脖P(pán)的原因,可以簡(jiǎn)單理 解成可以無(wú)限擴(kuò)容,這樣就可以把很多命中率低的內(nèi)容進(jìn)行緩存。

    如果你的頁(yè)面需要一些動(dòng)態(tài)邏輯判斷,你可以把數(shù)據(jù)緩存成xml文件,然后服務(wù)器段整合這些XML文件,或者是包含文件。這也是種不錯(cuò)的方法。

    說(shuō)了這么多緩存命中率的問(wèn)題,簡(jiǎn)單匯總一下緩存命中率的觀點(diǎn):

    小型網(wǎng)站可以全部數(shù)據(jù)緩存,一般壓力也不會(huì)很大,可以忽略緩存命中率問(wèn)題。
    大型服務(wù)無(wú)法全部數(shù)據(jù)緩存,只能部分?jǐn)?shù)據(jù)緩存,這時(shí)候就需要架構(gòu)師設(shè)計(jì)出對(duì)該業(yè)務(wù)邏輯適用的緩存方法,盡可能的提高緩存的命中率。
    提高命中率的方法大多是跟業(yè)務(wù)邏輯捆綁的,需要跟具體問(wèn)題具體分析
    對(duì)于不能被內(nèi)存緩存的數(shù)據(jù),最簡(jiǎn)單的提高性能方法就是使用文件緩存。
    文件緩存可以整個(gè)內(nèi)容緩存成一個(gè)靜態(tài)文件;也可以是整個(gè)頁(yè)面的一個(gè)區(qū)域被緩存成一個(gè)文件,然后被包含;也可以是把一個(gè)實(shí)體序列化成XML 文件進(jìn)行緩存。
    下面我們看看緩存的其他幾個(gè)不那么重要的方面:

    緩存的生命周期內(nèi)的活動(dòng)

    永久不過(guò)期,永久不變更的內(nèi)容,這類(lèi)東西就不應(yīng)該放在緩存。緩存是臨時(shí)的存儲(chǔ),而不是永久的,所以緩存的生命周期是有限的。

    它依次可能會(huì)經(jīng)歷如下活動(dòng):

    進(jìn)入緩存。(進(jìn)入緩存的時(shí)候,可能需要指定它以后的過(guò)期策略,如果不指定,需要使用系統(tǒng)默認(rèn)的過(guò)期策略)
    從緩存中獲得它,注意,這時(shí)候需要處理線程安全的問(wèn)題。
    更新緩存,注意,也需要考慮線程安全問(wèn)題
    離開(kāi)緩存,這個(gè)可能是外部請(qǐng)求,也可能是緩存根據(jù)過(guò)期策略把它清理掉。
    緩存的過(guò)期策略

    一般我會(huì)問(wèn),你所接觸的緩存中,碰到過(guò)那些緩存過(guò)期策略?

    最常見(jiàn)的幾種過(guò)期策略如下:

    多長(zhǎng)時(shí)間沒(méi)有被請(qǐng)求,則過(guò)期,最典型的就是asp和asp.net 提供的 Section 功能。其實(shí)它就是一個(gè)緩存。

    依賴(lài)于文件變更的緩存,一旦文件被修改,緩存則過(guò)期,典型的是 WEB站點(diǎn)的 Web.config ,一旦這個(gè)文件變更,不但緩存重起,IIS進(jìn)程也會(huì)進(jìn)行一次釋放工作。

    在此基礎(chǔ)上,可能看到很多依賴(lài)關(guān)系的緩存過(guò)期策略。比如依賴(lài)于數(shù)據(jù)庫(kù)的緩存過(guò)期策略。

    當(dāng)然,業(yè)務(wù)邏輯里可能會(huì)有更復(fù)雜的過(guò)期策略,必須CSDN新版積分制論壇中,帖子列表緩存會(huì)在列表數(shù)據(jù)緩存達(dá)到600時(shí),把它清理到550條數(shù) 據(jù)。

    又比如新積分制論壇帖子的緩存過(guò)期,則是沒(méi)有任何列表引用這個(gè)帖子后,則這個(gè)帖子過(guò)期。

    緩存的同步問(wèn)題

    使用緩存,則意味著同樣的數(shù)據(jù),可能有多份并存。如果你的代碼沒(méi)有考慮某種情況,導(dǎo)致了這兩份數(shù)據(jù)不一致了。這時(shí)候就會(huì)有問(wèn)題發(fā)生。

    解決方法很簡(jiǎn)單,把你的業(yè)務(wù)邏輯,代碼觸發(fā)情況都考慮清楚,不要遺留沒(méi)有觸底的地方。

    簡(jiǎn)單的方法會(huì)導(dǎo)致你的代碼邏輯變得非常復(fù)雜。

    這也就是有些人,在非必要的時(shí)候,建議你不要用緩存的原因。一旦開(kāi)始使用緩存,你就應(yīng)該準(zhǔn)備增加大量的代碼來(lái)處理數(shù)據(jù)同步的問(wèn)題。

    初始化填充緩存數(shù)據(jù)

    有時(shí)候在緩存被初始化后,還需要預(yù)先填充一些數(shù)據(jù)到緩存中。這就是緩存數(shù)據(jù)的初始化操作。

    緩存數(shù)據(jù)的初始化操作需要考慮以下問(wèn)題:

    需要多長(zhǎng)時(shí)間進(jìn)行初始化,一般如果是站點(diǎn)的話,我們可能在 Global.asa 的 application_OnStart 中處理這個(gè)初始化工作。初始化的一般不能太久,這時(shí)候就是考驗(yàn)我們代碼優(yōu)化的能力了。
    初始化的時(shí)候,一般是批量導(dǎo)入數(shù)據(jù),而不是我們正常使用的時(shí)候,一次處理一個(gè)數(shù)據(jù)。
    總結(jié):

    本文介紹了我對(duì)緩存的一些觀點(diǎn),而沒(méi)有深入涉及到具體的緩存技術(shù)。希望通過(guò)本文的講述,讓只會(huì)緩存用法不懂緩存思想的人有初步的了解。


    最新推薦


    微信公眾帳號(hào)
    關(guān)注我們的微信