2012-01-12 82 views
0

在性能视图中使用Caching库的最佳方式是什么?我的数据库表中有很多数据需要缓存。c#企业库CacheManager的缓存性能

可以说我有3个表名。

  1. AssignmentHead
  2. AssignmentRow
  3. 项目

今天IAM存储表作为法洛斯:

private CacheManager _manager = _manager = CacheFactory.GetCacheManager(); 

我有一个CacheManger和我店这样的数据。

_manager.add("Heads",ListofAssignmentHeads); 
_manager.add("Rows",ListofAssigmmentRows); 
_manager.add("Items",ListOfItems); 

检索像头数据,当我做休耕:

_manager.GetData("Heads"); 

然后我得到的头一个列表,并使用LINQ查询我想要什么。但是,这是做这件事的最好方式,还是为每个表设置3个CacheManager并插入主键和对象最好。

_headManager.add("1",HeadObject); 

我真的需要你们对这些的建议。谢谢您的帮助。

+0

您可以从“.NET Framework应用程序中的缓存”开始http://msdn.microsoft.com/en-us/library/dd997357.aspx – 2012-01-12 11:10:34

+0

谢谢,我会阅读它。 – Tan 2012-01-13 09:50:54

回答

1

就个人而言,所有的东西几乎相等,我会缓存数据的格式,我将在运行时需要它。这样您就可以直接在需要的表示中获取所需的信息。在你的例子中,它将是多个CacheManagers,主键作为缓存键。

它看起来像你已经有方法返回列表,你正在缓存列表。我宁愿在数据加载时迭代列表,然后通过键执行查找,而不是在每次调用时迭代列表。如果您的列表很大,如果您必须为每个请求搜索列表,则可能会看到性能下降,因为查找列表中的元素对于没有散列冲突的缓存为O(N)对O(1)。

当然,如果您想要支持动态列表,那么您可能更愿意将列表根据需要添加到单个CacheManager中,因为创建动态CacheManagers是一项工作。