C#緩存之SqlCacheDependency用法實例總結。本站提示廣大學習愛好者:(C#緩存之SqlCacheDependency用法實例總結)文章只能為提供參考,不一定能成為您想要的結果。以下是C#緩存之SqlCacheDependency用法實例總結正文
本文初步商量了C#緩存的道理及運用,並以實例加以剖析總結,這些對C#初學者來講是很有需要闇練控制的內容。詳細以下:
1、概述:
緩存運用目標:緩存重要是為了進步數據的讀取速度。由於辦事器和運用客戶端之間存在著流量的瓶頸,所以讀取年夜容量數據時,應用緩存來直接為客戶端辦事,可以削減客戶端與辦事器真個數據交互,從而年夜年夜進步法式的機能。
1、緩存的援用空間:System.Web.Caching; 緩存定名空間重要供給三種操作:緩存數據對象、對象的緩存依附和數據庫的緩存依附。個中緩存任何對象都應用一個類Cache,但當緩存產生轉變時,通俗對象和數據庫對象的依附處置分歧。
2、治理緩存類:Cache
Cache類用來存儲數據對象,並供給辦法對這些對象停止編纂。Cache類屬於字典類,其依據必定的規矩存儲用戶須要的數據,這些數據的類型不受限制,可所以字符串、數組、數據表、Dataset和哈希表等。
應用Cache類的長處是當緩存的數據產生變更時,Cache類會讓數據掉效,並完成緩存數據的從新添加,然後告訴運用法式,申報緩存的實時更新。
2、辦法詳解:
Cache類的辦法重要供給對緩存數據的編纂操作,如增、刪、改等。
Add 將數據添加到Cache對象
Insert 向Cache中拔出數據項,可用於修正曾經存在的數據緩存項
Remove 移除Cache對象中的緩存數據項
Get 從Cache對象中獲得指定的數據項,留意前往的是Object類型,須要停止類型轉換
GetType 從Cache對象中獲得數據項的類型,斷定數據類型後,便利停止轉換
最須要留意的是Add辦法,其應用語法以下:
public Object Add ( string key, Object value, CacheDependency dependencies, DateTime absoluteExpiration, TimeSpan slidingExpiration, CacheItemPriority priority, CacheItemRemovedCallback onRemoveCallback )
在應用Add辦法時,以上7個參數是必須的,其代表意義以下:
— 參數“key”代表緩存數據項的鍵值,必需是獨一的。
— 參數“value”代表緩存數據的內容,可所以隨意率性類型。
— 參數“dependencies”表現緩存的依附項,也就是此項的更改意味著緩存內容曾經過時。假如沒有依附項,可將此值設置為NULL。
— 參數“absoluteExpiration”是日期型數據,表現緩存過時的時光,.NET 2.0供給的緩存在過時後是可使用的,能應用多長時光,就看這個參數的設置。
— 參數“slidingExpiration”的類型表現一段時光距離,表現緩存參數將在多長時光今後被刪除,此參數與absoluteExpiration參數相干聯。
— 參數“priority”表現撤消緩存的優先值,此參數的值取自列舉變量“CacheItemPriority”,優先級低的數據項將先被刪除。此參數重要用在緩存加入對象時。
— 參數“onRemoveCallback”表現緩存刪除數據對象時挪用的事宜,普通用做告訴法式。
運用代碼以下:
ArrayList myarray = new ArrayList(); myarray.Add("1.進修寰宇1"); myarray.Add("2.進修寰宇1"); myarray.Add("3.進修寰宇1"); myarray.Add("4.進修寰宇1"); string item = "這是一條緩存"; Cache["item"] = item;//賦值 Response.Write(Cache.Get("item") + "<br/>"); item = "更改一條緩存數據"; Cache.Insert("item", item);//更改緩存值 Response.Write(Cache.Get("item") + "<br/>"); //Cache.Remove("item"); //移除緩存值 //Response.Write(Cache.Get("item") + "<br/>"); Response.Write(Cache["item"].GetType().Name + "<br/>");//GetType取得Cache的數據類型 Response.Write(Cache.Get("Array") + "<br/>");//GetType取得Cache的數據類型 IDictionaryEnumerator bianli = Cache.GetEnumerator();//遍歷全部緩存 while (bianli.MoveNext()) { Response.Write(bianli.Value + "<br/>"); } Response.Write("獲得緩存數目:" + Cache.Count); if (Cache["Array"] == null) {//當緩存Array不存在時,添加緩存,緩存時光設定為5秒 Cache.Add("Array", myarray, null, DateTime.Now.AddSeconds(5), TimeSpan.Zero, CacheItemPriority.Normal, null); }
3、 緩存依附類:CacheDependency類
功效解釋:
CacheDependency類被稱為是緩存依附類,其詳細意義表示在當緩存對象的現實數據產生轉變時,它能實時告訴緩存對象。例如緩存對象“Category”保留的是一個XML文件的數據,假如XML文件產生了變更,那末體系經由過程CacheDependency類就會實時更新緩存對象“Category”的內容,如許就可以包管用戶讀取的永久是最新的數據。
代碼實例:
CaCheXml.xml文件以下:
<?xml version="1.0" encoding="utf-8" ?> <book> <bookinfo> <name>英國現代</name> <price>28.00</price> </bookinfo> <bookinfo> <name>中國汗青</name> <price>20.00</price> </bookinfo> <bookinfo> <name>中國汗青1232sdf2</name> <price>20.00</price> </bookinfo> </book>
後台代碼以下:
private static CacheDependency Mydata; protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { DataSet ds = new DataSet(); ds.ReadXml(Server.MapPath("Cachexml.xml"));//讀取Xml外面數據 if (Cache["CXml"] == null) { //創立緩存依附項 Mydata = new CacheDependency(Server.MapPath("Cachexml.xml")); Cache.Add("CXml", ds, Mydata, DateTime.Now.AddSeconds(10), TimeSpan.Zero, CacheItemPriority.Normal, null); } } } protected void Button1_Click(object sender, EventArgs e) { if (Mydata.HasChanged) {//斷定緩存能否更改 Response.Write("緩存曾經更改,更改時光為"+Mydata.UtcLastModified);//獲得緩存的跟新時光 } if (Cache["CXml"] == null) {//當xml文件被修改時緩存重新加載 DataSet ds = new DataSet(); ds.ReadXml(Server.MapPath("Cachexml.xml"));//讀取Xml外面數據 //創立緩存依附項 Mydata = new CacheDependency(Server.MapPath("Cachexml.xml")); Cache.Add("CXml", ds, Mydata, DateTime.Now.AddSeconds(60), TimeSpan.Zero, CacheItemPriority.Normal, null); } this.GridView1.DataSource = Cache["CXml"]; this.GridView1.DataBind(); }