我正处于用C#设计内存缓存的初期阶段(它将作为Windows服务运行)。一旦投入生产,预计平均可容纳近一百万个对象(各种类型)。某些缓存项的大小最大为10MB(或更多)。
我考虑了各种数据存储解决方案,现在我决定选择DataTable或SQLite内存中实例作为缓存存储。此时,我的问题是
您如何看待这么多记录的数据表的性能?
您是否认为使用SQLite解决方案是一个过大的杀手?(由于SQLite被设计为“数据库”,因此我可能并不真的希望所有那些与数据库相关的管道活动)
性能是我的重中之重。
编辑
添加更多细节。
这些缓存项不仅仅是键值对,它们还有两个
(目前)属性(固定和锁定的项目),这可能会影响
他们的可用性。每次查询都将包括所有这三个
属性。
已经考虑过Memcached,但目前还不是
选项主要是由于我们的SLA限制(这就是我可以说的
它)。
并非所有项目的大小均为10MB。
我敢肯定,其中许多项目将仅仅是
数字和较小的字符串值。
我相信,RAM的可用性不是问题。
提前致谢,
詹姆士
最佳答案
1:糟糕。 DataTbles速度很慢,而且内存消耗很大,对于大型项目,这不会神奇地改变。
2:您告诉我们。
您考虑过使用简单的字典吗?您知道键/值对。
答案确实取决于您计划使用Cache做什么。