在性能视图中使用缓存库的最佳方法是什么。我的数据库表中有很多数据要缓存。
假设我有3个名为。
的表今天我把这些桌子作为休闲存放:
private CacheManager _manager = _manager = CacheFactory.GetCacheManager();
我有一个CacheManger并且我存储了这样的数据。
_manager.add("Heads",ListofAssignmentHeads);
_manager.add("Rows",ListofAssigmmentRows);
_manager.add("Items",ListOfItems);
在检索像Heads这样的数据时,我会这样做:
_manager.GetData("Heads");
然后我得到一个头列表并使用linq来查询我想要的内容。但这是最好的方法吗?或者最好为每个表设置3个CacheManager并插入主键然后插入对象。
_headManager.add("1",HeadObject);
我真的需要你对这些建议。谢谢你的帮助。
答案 0 :(得分:1)
就个人而言,所有事情几乎相同,我会以运行时需要的格式缓存数据。这样,您就可以直接在所需的表示中获取所需的信息。在您的示例中,将使用主键作为缓存键的多个CacheManagers。
看起来您已经有了返回列表的方法,并且您正在缓存列表。我宁愿在加载数据时迭代列表一次,然后按键执行查找,而不是在每次调用时迭代列表。如果您的列表很大,如果您必须搜索每个请求的列表,您可能会看到性能损失,因为在没有散列冲突的缓存中查找列表中的元素是O(N)与O(1)。
当然,如果您想支持动态列表,那么您可能更愿意根据需要将列表添加到单个CacheManager,因为创建动态CacheManager是一项工作。