C# Cache什麼時候使用及使用方法

Cache 即高速緩存.那麼cache是怎麼樣提升系統性能與運行速度呢?是否是在任何狀況下用cache都能提升性能?是否是cache用的越多就越好呢?我在近 期開發的項目中有所體會,寫下來看成總結也但願能跟你們一塊兒探討探討,有錯誤的地方但願你們批評指正。
  1.Cache 是怎麼樣工做的?
  Cache 是分配在服務器上的一個公共的內存片。
  所謂公共指的cache只要一建立是任何一個客戶端瀏覽器均可以經過後臺代碼訪問到它,它面向的是全部用戶,相對而言session也是服務器上的一 段內存,但他面向的是單個用戶。它是服務器的一段內存塊,也就是說每一個cache一經建立就佔用了服務器資源的。因此從這點來講咱們就能夠說:並非 cache越多越好。  
  cache 是有時間限制的,超過了服務器設定的過時時間,它就會被服務器回收。
  cache 能夠存聽任何對象
  
  2.Cache 怎麼樣建立以及怎麼樣銷燬  
  建立cache  
  在DotNet環境下經過Cache.Insert(string key,object o)方法建立。
      其中key 表明cache的ID,o表明存到cache裏的對象。
  
  銷燬cache 
  經過方法Cache.Remove(string key)
      其中key 表明cache的 ID.
  
  調用cache  
  Cache支持裝箱/拆箱操做。如你能夠把一個DataSet對象ds經過Cache.Insert(「dsCache」,ds)的方式存到Cache中,能夠經過拆箱操做 DataSet ds = (DataSet)Cache[「dsCache」]來訪問它。
  
  3.何時用cache  
  Cache 通常用於數據較固定,用的較頻繁的地方。例如能夠把進銷存系統中能夠把產品信息存入cache,在用戶調用產品信息時經過調用cache便可,這樣從很大 程度上減小了用戶與數據庫的交互,提升了系統的性能。反之,cache不適合用在數據變更快,使用範圍很窄的地方。例如把一個具體採購單存入 cache中。
  
  4.cache 調用注意事項  
  Cache是有時間限制的。超過了服務器設置的過時時間,就會被服務器回收。當cache被回收後對應的內存塊就會被清空,再次經過cache[「cachekey」]訪問對象時返回的就是null值。因此如下這種調用就會出現異常
  
  DataSet ds = (DataSet)Cache[「cacheds」];  
  DataRow dr = ds.Table[0].Row[0]; //出錯,ds爲null值,不存在表0。
  
  正確的寫法應該是:  
  DataSet ds;  
  if(Cache[「cacheds」] != null)  
  {  
      ds = (DataSet)Cache[「cacheds」];  
  }  
  else  
  {  
      ds= GetDsFromDataBase();  
  }  
  DataRow dr = ds.Table[0].Row[0];
數據庫

相關文章
相關標籤/搜索