我想问你的专家建议在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