c#企业库缓存关于CacheManager的性能
本文关键字:CacheManager 性能 企业库 缓存 | 更新日期: 2023-09-27 18:20:10
在性能视图中使用缓存库的最佳方式是什么。我的数据库表中有很多数据要缓存。
假设我有3张表命名。
- 工作分配负责人
- 工作分配行
- 项目
今天我把这些表作为闲置的存储:
private CacheManager _manager = _manager = CacheFactory.GetCacheManager();
我有一个CacheManger,我像这样存储数据。
_manager.add("Heads",ListofAssignmentHeads);
_manager.add("Rows",ListofAssigmmentRows);
_manager.add("Items",ListOfItems);
当检索像Heads这样的数据时,我做休闲:
_manager.GetData("Heads");
然后我得到了一个heads列表,并使用linq查询我想要什么。但这是最好的方法吗?还是最好为每个表设置3个CacheManager,然后插入主键,然后插入对象。
_headManager.add("1",HeadObject);
我真的需要你对这件事的建议。谢谢你的帮助。
就我个人而言,在所有条件几乎相同的情况下,我会以运行时需要的格式缓存数据。这样,您就可以直接在所需的表示中获得所需的信息。在您的示例中,这将是多个以主键为缓存键的CacheManager。
看起来您已经有了返回列表的方法,并且正在缓存列表。我宁愿在加载数据时迭代列表一次,然后按键执行查找,也不愿在每次调用时迭代列表。如果你的列表很大,如果你必须为每个请求搜索列表,你可能会看到性能下降,因为在列表中找到的元素是O(N),而在没有哈希冲突的缓存中找到的是O(1)。
当然,如果您想支持动态列表,那么您可能更喜欢根据需要将列表添加到单个CacheManager中,因为创建动态CacheManager需要一些工作。