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

緩存碎語二,緩存碎語

編輯:C#入門知識

緩存碎語二,緩存碎語


緩存很多條數據,但只讀取其中的一部分數據,如何處理?

 

比如在緩存中保存了100條數據,但讀取分頁數據,比如每次分頁只讀取10條數據。這種情況下,可以把這100條數據拆分成10次分別保存起來。每一個緩存項的key需要特別的設計,比如:01-10-products, 02-10-products......

 

如何避免緩存一些不需要的數據?

 

比如:

public class Teacher
{
    public int Id{get;set;}
    public string Name{get;set;}
    public Department Department{get;set;}
}
public class Department
{
    public int Id{get;set;}
    public string Name{get;set;}
}

 

這裡只想把Teacher緩存起來,但是,如果采用.NET默認的序列化機制,即在Teacher這個類上打上Serializable特性,序列化Teacher的時候,也會把引用屬性Department對應的類Department一同序列化。

 

解決這個問題的方法是:在不需要被序列化的類上打上[NonSerialized]特性,或者實現ISerializable接口,自定義序列化的邏輯。

 

如何實現通過不同的key讀取相同的緩存項?

 

比如緩存產品,有時候把產品名作為key保存起來,有時候通過集合索引來從緩存中獲取產品,這時候我們可以把不同形式的key連接成字符串作為key。

var product = GetProduct();
cache["prod_1"] = product;
......
var cacheProduct = cache["prod_1"];

 

參考資料:汪洋的"DotNet"公眾號。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved