天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

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

  我們搞程序的多多少少都了解點(diǎn)算法。總體來(lái)講,算法是什么?算法就是“時(shí)間”和“空間”的互換策略。我們常??季恳粋€(gè)算法的時(shí)間復(fù)雜度或空間復(fù)雜度,如果我們有絕對(duì)足夠的時(shí)間或空間,那么算法就不需要了,可惜這種條件是不存在的,只是在某些情況下相對(duì)來(lái)說(shuō)我們不用去考慮其中一個(gè)。今天我們討論的“緩存”,自然就是“用空間換時(shí)間”的算法。 緩存就是把一些數(shù)據(jù)暫時(shí)存放于某些地方,可能是內(nèi)存,也有可能硬盤??傊?,目的就是為了避免某些耗時(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ō)多了都是故事?,F(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ú)所謂,我們寫代碼完全可以不用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è)方法的偽代碼寫出來(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)系我們修改或刪除,多謝。

主站蜘蛛池模板: 精品久久久久中文字幕加勒比东京热 | 琪琪热热色原日韩在线 | 十8禁用B站在线看漫画 | 男助理憋尿PLAY灌尿BL出去 | 精品淑女少妇AV久久免费 | 人妻系列合集 | 国产成人永久免费视频 | 国产精品无码人妻99999 | 亚洲AV无码一区二区三区乱子伦 | 久久99re66热这里只有精品 | c了瑜伽老师嗷嗷叫一节课视频 | 中国大陆一级毛片免费 | 国产在线AV一区二区香蕉 | 99久久就热视频精品草 | 久久精品影视 | 成人免费无毒在线观看网站 | 男男免费看 | 高H黄暴NP辣H一女多男 | 国产欧美无码亚洲毛片 | 国产亚洲精品久久久久5区 国产亚洲精品久久久久 | 20岁中国男同志china1069 20岁αsrian男同志免费 | 老司机深夜福利ae 入口网站 | 亚洲国产综合久久久无码色伦 | 精品夜夜澡人妻无码AV蜜桃 | 美女禁处受辱漫画 | 国产精品7777人妻精品冫 | 果冻传媒mv国产陈若瑶主演 | 玖玖爱这里只有精品视频 | 受被攻做到腿发颤高h文 | 精品视频免费在线 | 欧美不卡一区二区三区 | 播色屋97超碰在人人 | 亚洲春色AV无码专区456 | 67194在线入口免费 | A级超碰视频在线观看 | 二级毛片免费观看全程 | 在线视频 国产精品 中文字幕 | 中俄两军在日本海等上空战略巡航 | 爽爽影院线观看免费 | 99re热精品视频国产免费 | 中文字幕久精品视频在线观看 |