asp.net數據緩存(應用程序緩存)

應用程序緩存是用來存儲與應用程序相關的對象,主要是由Cache類來實現的。
命名控件: using System.Web.Caching;
添加緩存
1
、指定鍵和值
   Cache["key"] = "value";
這種方法添加緩存最方便,可是若是須要設置緩存的有效期、依賴項等特性,它就變得無能爲力了
2
、使用Add()方法——只用於在ASP.NET緩存中添加新的緩存項(若是用它覆蓋現有的緩存項,則會失敗)
   Cache.Add("key","value",CacheDependency,DateTime,TimeSpan,CacheItemPriority,CacheItemRemovedCallbac);
  
這種方法適用於須要設置緩存的有效期、依賴項等特性的緩存,可是要注意它的7個參數必須寫完整才能生效,因此靈活性不夠好。
  
參數說明:
  
第一個參數:key——表示引用緩存對象的鍵(鍵)
  
第二個參數:value——表示要緩存的對象(值)
  
第三個參數:CacheDependency——表示添加依賴項(容許指定一個文件或緩存鍵。若是文件發生變化,對象就被刪除。若是緩存鍵發生變化,對象也被刪除)
  
第四個參數:DateTime——表示絕對過時時間(指明緩存數據過時的時間)
  
第五個參數:TimeSpan——表示可調過時時間又叫彈性的過時時間。指明緩存數據在上一次訪問後能夠在緩存中保留多長時間(也就是說在相對過時時間內,以相對過時時間剩餘時間點爲起點再進行相對過時時間。TimeSpan.Zero表示沒有指定可調過時時間)()
  
第六個參數:CacheItemPriority——表示優先級,當在緩存被填滿的時候刪除那些優先級低的數據
  
第七個參數:CacheItemRemovedCallbac——表示回調自定義的方法(示例:能夠在緩存項從緩存中刪除時要求通知),它的類型是CacheItemRemovedCallback類型的
  
  
示例一:(指定一個5分鐘絕對過時時間)
         Cache.Add("key","value",null,DateTime.Now.AddMinutes(5),TimeSpan.Zero,CacheItemPriority.Normal,null);   //
建立一個指定5分鐘絕對過時時間的緩存
  
  
示例二:(指定一個5分鐘的彈性過時時間,沒有指定絕對過時時間)
       Cache.Add("key","value",null,DateTime.MaxValue,TimeSpan.FromMinutes(5),CacheItemPriority.Normal,null);    //
建立一個指定5分鐘彈性過時時間的緩存
  
示例三:(過時時間也取決於一個文件的修改)
  //
過時時間取決於test.xml文件修改。也就是說當test.xml文件內容修改時此緩存就會過時
     CacheDependency dependency = new CacheDependency("C:\\test.xml");
     //
建立一個依賴文件修改而過時的緩存
     Cache.Add("key","value",dependency,DateTime.MaxValue,TimeSpan.FromMinutes(5),CacheItemPriority.Normal,null);
  
示例四:(過時時間取決於緩存中另外一項的修改)
         Cache.Add("key1","value",null,DateTime.MaxValue,TimeSpan.Zero,CacheItemPriority.Normal,null); //
當緩存key1的值修改時,緩存key2就會過時
     //
添加愛到數組中
     String[] dependencyKeys = new String[1];
     dependencyKeys[0] = "key1";
     CacheDependency dependency = new CacheDependency(null, dependencyKeys);
     //
建立一個依賴另外一個緩存修改而過時的緩存
     Cache.Add("key2","value",dependency,DateTime.MaxValue,TimeSpan.Zero,CacheItemPriority.Normal,null);
    
示例五:(緩存過時後回調方法)
     public void ItemRemovedCallback(String key, Object value, CacheItemRemovedReason reason){} //
緩存過時將要調用的方法
     //
建立一個當指定5分鐘的彈性過時時間後調用ItemRemovedCallback方法的緩存
     Cache.Add("key","value",null,DateTime.MaxValue,TimeSpan.FromMinutes(5),CacheItemPriority.Normal,new CacheItemRemovedCallback(this.ItemRemovedCallback));
數組

優先級值順序緩存

含義this

Highspa

設爲此優先級的緩存項是最不可能在內存不足時被刪除的orm

AboveNormalxml

設爲此優先級的緩存項比優先級爲Normal或如下的緩存項更優先保留對象

Normal內存

設爲此優先級的緩存項比優先級爲BelowNormal和Low的緩存項更優先保留ci

BelowNormalit

這是倒數第二級的優先級;設爲此優先級的緩存項只比優先級設爲Low的緩存項更優先保留

Low

設爲此優先級的緩存項是最有可能在內存不足時被刪除的

Default

緩存項的優先級的默認值是Normal

NotRemovable

當緩存項設爲此優先級時,是在告訴ASP.NET即便是內存不足,也不要從緩存中刪除它

3、使用Insert()方法——用於覆蓋ASP.NET緩存中現有的緩存項。   這種方法能夠實現多種方式的方法重載,使用起來比較靈活(但主要用法和Cache.Add用法差不錯)

Cache.Insert("key","value");


     示例一:(鍵值添加)
       Cache.Insert("key1","value1");
      
示例二:(添加依賴項的緩存)
   Cache.Insert("key","value",System.Web.Caching.CacheDependecy(null,dependencies));
      
示例三:(添加有效過時時間的)
       Cache.Insert("key","value",DateTime.Now.AddMinutes(1d),System.Web.Caching.Cache.NoSlidingExpiration);
  
示例四:(添加優先級的緩存)
     Cache.Insert("key","value",null,System.Web.Caching.Cache.NoSlidingExpiration,System.Web.Caching.Cache.NoSlidingExpiration,System.Web.Caching.CacheItemPriority.High,null);
4
、檢索緩存
    if (Cache["key"] != null)
    {    //
處理語句 }
5
、移除緩存
   (1)
自動移除
     
出現緩存已滿、或過時、依賴項更改等狀況時,緩存項就會自動移除
   (2)
顯示移除       Cache.Remove("key");

相關文章
相關標籤/搜索