緩存很多條數據,但只讀取其中的一部分數據,如何處理?
比如在緩存中保存了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"公眾號。