欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C#中緩存的基本用法總結(jié)

 更新時間:2014年08月12日 15:52:28   投稿:shichen2014  
這篇文章主要介紹了C#中緩存的基本用法,對C#初學(xué)者來說是很有必要熟練掌握的內(nèi)容,需要的朋友可以參考下

本文初步探討了C#緩存的原理及應(yīng)用,并以實例加以分析總結(jié),這些對C#初學(xué)者來說是很有必要熟練掌握的內(nèi)容。具體如下:

一、概述:

緩存應(yīng)用目的:緩存主要是為了提高數(shù)據(jù)的讀取速度。因為服務(wù)器和應(yīng)用客戶端之間存在著流量的瓶頸,所以讀取大容量數(shù)據(jù)時,使用緩存來直接為客戶端服務(wù),可以減少客戶端與服務(wù)器端的數(shù)據(jù)交互,從而大大提高程序的性能。

1、緩存的引用空間:System.Web.Caching; 緩存命名空間主要提供三種操作:緩存數(shù)據(jù)對象、對象的緩存依賴和數(shù)據(jù)庫的緩存依賴。其中緩存任何對象都使用一個類Cache,但當緩存發(fā)生改變時,普通對象和數(shù)據(jù)庫對象的依賴處理不同。

2、管理緩存類:Cache

Cache類用來存儲數(shù)據(jù)對象,并提供方法對這些對象進行編輯。Cache類屬于字典類,其根據(jù)一定的規(guī)則存儲用戶需要的數(shù)據(jù),這些數(shù)據(jù)的類型不受限制,可以是字符串、數(shù)組、數(shù)據(jù)表、Dataset和哈希表等。
使用Cache類的優(yōu)點是當緩存的數(shù)據(jù)發(fā)生變化時,Cache類會讓數(shù)據(jù)失效,并實現(xiàn)緩存數(shù)據(jù)的重新添加,然后通知應(yīng)用程序,報告緩存的及時更新。

二、方法詳解:

Cache類的方法主要提供對緩存數(shù)據(jù)的編輯操作,如增、刪、改等。

Add 將數(shù)據(jù)添加到Cache對象
Insert 向Cache中插入數(shù)據(jù)項,可用于修改已經(jīng)存在的數(shù)據(jù)緩存項
Remove 移除Cache對象中的緩存數(shù)據(jù)項
Get 從Cache對象中獲取指定的數(shù)據(jù)項,注意返回的是Object類型,需要進行類型轉(zhuǎn)換
GetType 從Cache對象中獲取數(shù)據(jù)項的類型,判斷數(shù)據(jù)類型后,方便進行轉(zhuǎn)換

最需要注意的是Add方法,其使用語法如下:

public Object Add (
string key,
Object value,
CacheDependency dependencies,
DateTime absoluteExpiration,
TimeSpan slidingExpiration,
CacheItemPriority priority,
CacheItemRemovedCallback onRemoveCallback
)

在使用Add方法時,以上7個參數(shù)是必需的,其代表意義如下:
— 參數(shù)“key”代表緩存數(shù)據(jù)項的鍵值,必須是唯一的。
— 參數(shù)“value”代表緩存數(shù)據(jù)的內(nèi)容,可以是任意類型。
— 參數(shù)“dependencies”表示緩存的依賴項,也就是此項的更改意味著緩存內(nèi)容已經(jīng)過期。如果沒有依賴項,可將此值設(shè)置為NULL。
— 參數(shù)“absoluteExpiration”是日期型數(shù)據(jù),表示緩存過期的時間,.NET 2.0提供的緩存在過期后是可以使用的,能使用多長時間,就看這個參數(shù)的設(shè)置。
— 參數(shù)“slidingExpiration”的類型表示一段時間間隔,表示緩存參數(shù)將在多長時間以后被刪除,此參數(shù)與absoluteExpiration參數(shù)相關(guān)聯(lián)。
— 參數(shù)“priority”表示撤銷緩存的優(yōu)先值,此參數(shù)的值取自枚舉變量“CacheItemPriority”,優(yōu)先級低的數(shù)據(jù)項將先被刪除。此參數(shù)主要用在緩存退出對象時。
— 參數(shù)“onRemoveCallback”表示緩存刪除數(shù)據(jù)對象時調(diào)用的事件,一般用做通知程序。

應(yīng)用代碼如下:

ArrayList myarray = new ArrayList();
        myarray.Add("1.學(xué)習天地1");
        myarray.Add("2.學(xué)習天地1");
        myarray.Add("3.學(xué)習天地1");
        myarray.Add("4.學(xué)習天地1");
        string item = "這是一條緩存";
        Cache["item"] = item;//賦值
        Response.Write(Cache.Get("item") + "<br/>");
 
        item = "更改一條緩存數(shù)據(jù)";
        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的數(shù)據(jù)類型 
        Response.Write(Cache.Get("Array") + "<br/>");//GetType獲得Cache的數(shù)據(jù)類型
 
 
        IDictionaryEnumerator bianli = Cache.GetEnumerator();//遍歷整個緩存
        while (bianli.MoveNext())
        {
          Response.Write(bianli.Value + "<br/>");
        }
        Response.Write("獲取緩存數(shù)量:" + Cache.Count);
 
        if (Cache["Array"] == null)
        {//當緩存Array不存在時,添加緩存,緩存時間設(shè)定為5秒
          Cache.Add("Array", myarray, null, DateTime.Now.AddSeconds(5), TimeSpan.Zero, CacheItemPriority.Normal, null);
        }

3、  緩存依賴類:CacheDependency類

功能說明:

CacheDependency類被稱為是緩存依賴類,其具體意義表現(xiàn)在當緩存對象的實際數(shù)據(jù)發(fā)生改變時,它能及時通知緩存對象。例如緩存對象“Category”保存的是一個XML文件的數(shù)據(jù),如果XML文件發(fā)生了變化,那么系統(tǒng)通過CacheDependency類就會及時更新緩存對象“Category”的內(nèi)容,這樣就能保證用戶讀取的永遠是最新的數(shù)據(jù)。

代碼實例:

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里面數(shù)據(jù)
        if (Cache["CXml"] == null)
        {
          //創(chuàng)建緩存依賴項
          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("緩存已經(jīng)更改,更改時間為"+Mydata.UtcLastModified);//獲取緩存的跟新時間
      }
      if (Cache["CXml"] == null)
      {//當xml文件被改動時緩存從新加載
        DataSet ds = new DataSet();
        ds.ReadXml(Server.MapPath("Cachexml.xml"));//讀取Xml里面數(shù)據(jù)
        //創(chuàng)建緩存依賴項
        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();
    }

相關(guān)文章

  • WPF 自定義雷達圖開發(fā)實例教程

    WPF 自定義雷達圖開發(fā)實例教程

    這篇文章主要介紹了WPF 自定義雷達圖開發(fā)實例教程,本文介紹的非常詳細,具有參考借鑒價值,需要的朋友可以參考下
    2016-09-09
  • c#在WebAPI使用Session的方法

    c#在WebAPI使用Session的方法

    這篇文章主要介紹了c#在WebAPI使用Session的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-07-07
  • C# Winform 分頁功能的實現(xiàn)

    C# Winform 分頁功能的實現(xiàn)

    本文主要介紹了C# Winform 分頁功能的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習或者工作具有一定的參考學(xué)習價值,需要的朋友們下面隨著小編來一起學(xué)習學(xué)習吧
    2022-06-06
  • c#中winform根據(jù)郵箱地址和密碼一鍵發(fā)送email的實現(xiàn)

    c#中winform根據(jù)郵箱地址和密碼一鍵發(fā)送email的實現(xiàn)

    本文主要介紹了c#winform根據(jù)郵箱地址和密碼一鍵發(fā)送email的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習或者工作具有一定的參考學(xué)習價值,需要的朋友們下面隨著小編來一起學(xué)習學(xué)習吧
    2022-07-07
  • c#中WinForm用OpencvSharp實現(xiàn)ROI區(qū)域提取的示例

    c#中WinForm用OpencvSharp實現(xiàn)ROI區(qū)域提取的示例

    已經(jīng)自學(xué)OpencvSharp一段時間了,現(xiàn)在就分享一下我的學(xué)習過程,本文主要介紹了c#中WinForm用OpencvSharp實現(xiàn)ROI區(qū)域提取的示例,具有一定的參考價值,感興趣的可以了解一下
    2022-05-05
  • C# 數(shù)獨求解算法的實現(xiàn)

    C# 數(shù)獨求解算法的實現(xiàn)

    這篇文章主要介紹了C# 數(shù)獨求解算法的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習或者工作具有一定的參考學(xué)習價值,需要的朋友們下面隨著小編來一起學(xué)習學(xué)習吧
    2020-01-01
  • c#枚舉值增加特性說明(推薦)

    c#枚舉值增加特性說明(推薦)

    這篇文章主要介紹了c#枚舉值增加特性說明(推薦),需要的朋友可以參考下
    2017-05-05
  • 基于C#實現(xiàn)簡單離線注冊碼生成與驗證

    基于C#實現(xiàn)簡單離線注冊碼生成與驗證

    本文使用RSA非對稱加密和Base64簡單地實現(xiàn)離線注冊碼的生成與驗證功能。感興趣的朋友跟著小編一起學(xué)習吧
    2015-09-09
  • C#在Winform開發(fā)中使用Grid++報表

    C#在Winform開發(fā)中使用Grid++報表

    這篇文章主要介紹了C#在Winform開發(fā)中使用Grid++報表,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習或者工作具有一定的參考學(xué)習價值,需要的朋友們下面隨著小編來一起學(xué)習學(xué)習吧
    2019-03-03
  • C#制作鷹眼的詳細全過程(帶注釋)實例代碼

    C#制作鷹眼的詳細全過程(帶注釋)實例代碼

    C#制作鷹眼的詳細全過程(帶注釋)實例代碼,需要的朋友可以參考一下
    2013-03-03

最新評論