一区二区久久-一区二区三区www-一区二区三区久久-一区二区三区久久精品-麻豆国产一区二区在线观看-麻豆国产视频

帶你走進(jìn)緩存世界

  我們搞程序的多多少少都了解點(diǎn)算法。總體來(lái)講,算法是什么?算法就是“時(shí)間”和“空間”的互換策略。我們常常考究一個(gè)算法的時(shí)間復(fù)雜度或空間復(fù)雜度,如果我們有絕對(duì)足夠的時(shí)間或空間,那么算法就不需要了,可惜這種條件是不存在的,只是在某些情況下相對(duì)來(lái)說(shuō)我們不用去考慮其中一個(gè)。今天我們討論的“緩存”,自然就是“用空間換時(shí)間”的算法。 緩存就是把一些數(shù)據(jù)暫時(shí)存放于某些地方,可能是內(nèi)存,也有可能硬盤(pán)。總之,目的就是為了避免某些耗時(shí)的操作。我們常見(jiàn)的耗時(shí)的操作,比如數(shù)據(jù)庫(kù)的查詢、一些數(shù)據(jù)的計(jì)算結(jié)果,或者是為了減輕服務(wù)器的壓力。其實(shí)減輕壓力也是因查詢或計(jì)算,雖然短耗時(shí),但操作很頻繁,累加起來(lái)也很長(zhǎng),造成嚴(yán)重排隊(duì)等情況,服務(wù)器抗不住)

  概念性的東西暫就不說(shuō)了,說(shuō)多了都是故事。現(xiàn)在我們來(lái)談?wù)劯鞣N緩存。

  初學(xué).NET的朋友開(kāi)始就會(huì)接觸到DataSet類,云里霧里的看著DataSet的例子程序,也不管是咋回事,用就是了。其實(shí)DataSet就是緩存,當(dāng)我們?nèi)プx取一段數(shù)據(jù)集合的時(shí)候,如果每讀取一條數(shù)據(jù)就處理一條的話,那么我們的程序和數(shù)據(jù)庫(kù)會(huì)一直連接著。假如處理一條數(shù)據(jù)的耗時(shí)可以忽略不計(jì),或者只有你一個(gè)人使用這個(gè)數(shù)據(jù)庫(kù)的話,那么數(shù)據(jù)庫(kù)一直連著也無(wú)所謂,我們寫(xiě)代碼完全可以不用DataSet類。但是事實(shí)上不耗時(shí)不可能的,如果耗時(shí)嚴(yán)重的話,就會(huì)一直占用這數(shù)據(jù)庫(kù)連接,直到我們處理完畢。如果這種查詢過(guò)多,連接數(shù)就會(huì)占用過(guò)多,而且數(shù)據(jù)庫(kù)在某些操作時(shí)會(huì)鎖住表,這就會(huì)造成其他的請(qǐng)求等待,會(huì)出現(xiàn)查詢超時(shí),程序異常等現(xiàn)象。所以,我們必須先把數(shù)據(jù)拿出來(lái),再對(duì)這些數(shù)據(jù)進(jìn)行相關(guān)的處理,盡早的關(guān)閉數(shù)據(jù)庫(kù)連接,好讓數(shù)據(jù)庫(kù)處理其他的請(qǐng)求。 所以,適時(shí)地選用DataSet或DataReader是比較重要的(說(shuō)明:DataReader就是hold住連接的讀取方式)。

  你可能會(huì)迷惑,不知不覺(jué)中使用了緩存(DataSet),這都是.NET幫你完成的事。可是,你可能還是不太清楚該如何使用緩存,或者說(shuō)何時(shí)使用緩存。不用著急,我們一一來(lái)看。

  上面說(shuō)過(guò),我們緩存的數(shù)據(jù)無(wú)非就是一些數(shù)據(jù)庫(kù)的查詢、計(jì)算結(jié)果和頻繁查詢。那么,我們?cè)趯?shí)際開(kāi)發(fā)中會(huì)碰到哪些這種數(shù)據(jù)呢? 其實(shí)仔細(xì)想想這是非常常見(jiàn)的,比如用戶登錄后的個(gè)人資料,當(dāng)他每次點(diǎn)擊連接后造成頁(yè)面刷新,我們總不能都要去重新查詢數(shù)據(jù)庫(kù)吧?我們常常用Session來(lái)存儲(chǔ)這個(gè)人的信息,當(dāng)他退出系統(tǒng)后我們把Session清理掉,所以Session也是緩存,只不過(guò)他也是.NET給我們提供好的類,sorry,我又舉了一個(gè)你不想看到的例子,哈哈。其實(shí)Session是私有化的數(shù)據(jù),Session的數(shù)據(jù)訪問(wèn)必須通過(guò)SessionID(詳情我就不多言了,大家google下),還不足以說(shuō)明緩存的意義。如果把這個(gè)問(wèn)題延伸下去,假如我們開(kāi)發(fā)的是一個(gè)多用戶的Blog系統(tǒng), 每當(dāng)我們?cè)L問(wèn)其中一個(gè)博客時(shí)都要去查詢這個(gè)博主的資料,假如A和B同時(shí)訪問(wèn)一個(gè)博客時(shí),最理想的狀態(tài)就是只查詢一次,而不是兩個(gè)人都去訪問(wèn)數(shù)據(jù)庫(kù)!是不是呢?其實(shí)。。。是也不是!(故事里的事,說(shuō)是就是,不是也是;說(shuō)不是就不是,是也不是。 :)。之所以說(shuō)不是,是因?yàn)榧偃缥覀兊牟┛途W(wǎng)站每天就幾個(gè)人訪問(wèn),而且一直發(fā)展不起來(lái),我們就沒(méi)必要用緩存,因?yàn)槭褂镁彺鎺?lái)了更多的開(kāi)發(fā)復(fù)雜度,因?yàn)槊慨?dāng)我們?nèi)ジ虏┲鞯馁Y料的時(shí)候不單單要更新數(shù)據(jù)庫(kù)的信息,我們還要去處理緩存。但是如果我們的博客訪問(wèn)量非常大,就像博客園似的,如果再不緩存,那數(shù)據(jù)庫(kù)服務(wù)器早就Gameover了:),那么現(xiàn)在就來(lái)看怎么用緩存的吧。

  .NET Framework提供了現(xiàn)成的緩存類供我們使用,常見(jiàn)的是 System.Web.HttpRuntime.Cache。每當(dāng)我們?nèi)?zhí)行 BlogDataProvier.GetBlogInfo()方法時(shí)(假定這個(gè)方法是我們獲取博主信息的方法,顧名思義嘛),需要在查詢之前先從緩存獲取數(shù)據(jù),假如數(shù)據(jù)不存在的話,再去數(shù)據(jù)庫(kù)獲取,并且把得到的結(jié)果存入緩存,并且返回該結(jié)果既可。下面我把這個(gè)方法的偽代碼寫(xiě)出來(lái),好讓從來(lái)沒(méi)用過(guò)緩存的朋友大致了解一下。

public class SqlDataProvider
{
public static object GetBlogInfo(string username)
{
//這里是從數(shù)據(jù)庫(kù)獲取BlogInfo
return null;
}
}

public class BlogDataProvider
{
public static object GetBlogInfo(string username)
{
var cacheKey
= "Blog_" + username;
var blog
= CacheHelper.Get(cacheKey);
if (blog == null)
{
blog
= SqlDataProvider.GetBlogInfo(username);
CacheHelper.Set(cacheKey, blog);
}
return blog;
}
}
public class CacheHelper
{
public static object Get(string key)
{
return System.Web.HttpRuntime.Cache.Get(key);
}
public static void Set(string key, object value)
{
System.Web.HttpRuntime.Cache.Insert(key, value);
}
}

NET技術(shù)帶你走進(jìn)緩存世界,轉(zhuǎn)載需保留來(lái)源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 中文字幕曰韩一区二区不卡 | 精品91自产拍在线 | 欧美色欧美亚洲高清在线观看 | 四虎2019| 狠狠做狠狠做综合日日 | 国产精品视频第一区二区三区 | 欧美成人精品欧美一级乱黄 | 亚洲第一激情 | 日本成人网址 | 色综合视频在线 | 九九精品在线 | 91亚洲精品国产自在现线 | 久久精品免费一区二区三区 | 色视频在线观看 | 国产在线观看91精品 | 国产三区二区 | 亚洲图片小说综合 | 亚洲人人视频 | 国产精品久久久久亚洲 | 色婷婷激情综合 | 国产小视频在线播放 | 中文字幕亚洲激情 | 国产老鸭窝毛片一区二区 | 国产精品久久久久久吹潮 | 亚洲日本欧美产综合在线 | 国产乱理论片在线观看理论 | 国产成人精品免费视频大全办公室 | 免费成人在线观看视频 | 成人午夜性视频欧美成人 | 欧美三级图片 | 亚洲香蕉久久 | 黄视频在线播放 | 51国产偷自视频区视频手机播器 | 五月婷综合网 | 337p日本大胆欧美人术艺术精品 | 91午夜在线 | 黄网在线免费看 | 免费国产成人手机在线观看 | 国产精品麻豆一区二区三区v视界 | 在线观看国产精美视频 | 国产精品久久久久毛片真精品 |