我想問你的專家建議在C#中可行的架構。C#架構建議:緩存結構中的數據的方法?
我有一個C#服務,它響應來自局域網上的本地用戶的請求,從互聯網獲取數據包,並將這些數據加工成結構中的數據陣列。每個數據請求大約需要2秒鐘,並返回4000個字節。每天可能有數以萬計的請求。我需要緩存數據處理的結果,以便第二次和隨後的訪問可以立即提供給LAN上的任何其他用戶(可能有50個以上的用戶)。
約束:
- 底層的數據不會改變,即我不擔心「髒」數據(太棒了!)。
- 我想要緩存的數據是一個相當複雜的結構,包含嵌套的DateTime,double等數組。數據是從互聯網提供的數據中使用大量數學計算的。
- 無論有多少數據被緩存(即緩存必須是大小限制的),我都不能使用超過100MB的內存。
- 我無法通過數字索引爲緩存中的數據建立索引,我不得不使用date(「YYYY-MM-DD」)和唯一ID字符串(「XXXXXXXX」)的組合對其進行索引。
- 它必須快速,即它必須服務於RAM的大部分響應。
- 緩存中的數據必須每隔24小時保存到磁盤。
這裏是我此刻的選擇:
- 緩存在服務器類的數據,使用私有變量(即私人列表或字典),然後將其序列化到磁盤偶爾;
- 使用數據庫;
我對你的專家意見很感興趣。
很好的答案,謝謝。我不是自己實現這個功能,而是最終使用Kellerman提供的現成解決方案.NET緩存庫。 – Contango 2010-10-31 20:47:07
不客氣。 – 2010-10-31 21:22:09