gpt4 book ai didi

c# - .Net System.Runtime.Caching.MemoryCache - 存储单个集合或单个自定义对象?

转载 作者:行者123 更新时间:2023-11-30 16:24:36 25 4
gpt4 key购买 nike

我正在使用 MemoryCache (.net 4.0) 实现缓存,以缓存将由我网站的所有用户使用的全局数据。

我最初的方法:存储一个 KeyedCollection,它将保存 Customer 对象的集合,并使用一个键来获取单个对象。此集合最多可包含 250 个此类对象。每当缓存过期时,我都会重建 KeyedCollection 并将其添加到缓存中。

新方法现在,我在想为什么不使用 customerid 作为查找键将每个 Customer 对象直接存储到缓存中。因此,与单个 KeyedCollection 相比,MemoryCache.Default 最多可以有 250 个这样的 Customer 对象。好处:

  1. 效率更高,因为我将直接从缓存而无需在 Keyed 上执行另一次查找收藏。
  2. 我只会在缓存中添加一个新的客户对象第一次要求。有点懒惰的添加,而不是预先构建整个缓存。

关于在性能和其他因素方面使用一个与另一个的任何想法?

最佳答案

解决方案将取决于您需要多久处理一次对象作为一个集合。

保存为集合的原因:

  • 单独存储每个对象,如果所有 250 个对象总是填充,占用更多空间,因为缓存中的每个项目都会有一个相关CacheItemPolicy .这种情况可能不太可能,然而。
  • 您不会制作强类型扩展方法可由 Linq 在集合上获得。 (扩展方法是可用,但 MemoryCache 项目公开为 KeyValuePair<string,
    object>
    ).

单独存放的原因:

  • 您一次只处理或主要处理一个对象。
  • 您希望每个对象根据其自身的使用频率而不是整个集合的使用频率从缓存中创建和删除。

因此,比较您可能的使用场景,然后做出相应的选择。很有可能,除非你写了很多 .Where , .Select等调用或有理由传递整个集合,然后单独存储将是更好的选择。

关于c# - .Net System.Runtime.Caching.MemoryCache - 存储单个集合或单个自定义对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10706240/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com