程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C#緩存之SqlCacheDependency用法實例總結

C#緩存之SqlCacheDependency用法實例總結

編輯:C#入門知識

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();
    }
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved