3

在将字典存储到缓存中以便快速查找时,我可以想到两个选项:将整个字典存储为缓存项,或者在缓存键前面加上标识符。

例子:

myPseudoCache.Put("Users", myDictionaryWithGuidsAsKeys);

对比

myPseudoCache.Put("Users_" + userId, singleUserEntity);

环境是 ASP.NET 应用程序中带有 HttpRuntime.Cache 的 C#,如果有兴趣的话,但我也对一般想法(可维护性方面、性能等)感兴趣。

我试图在这里做出合理的决定,但真的不确定具体的优缺点。也许有更多经验的人可以给我一些关于应该考虑什么的建议?非常感谢!

4

2 回答 2

2

这实际上是一种权衡。如果 myPseudoCache 将只包含“用户”,您可以采用第二种方法 - 即myPseudoCache.Put("Users_" + userId, singleUserEntity);

如果有许多不同的项目(例如组、角色),尤其是频率不同的项目,则爆炸式缓存结构可能不是最佳的。在这种情况下,遵循树状结构或字典中的字典是有意义的 - 即myPseudoCache.Put("Users", myDictionaryWithGuidsAsKeys);

例如; 如果您的角色数量较少,则角色查找不会因为用户数量异常多而受到影响。

于 2013-06-05T11:31:34.693 回答
1

我认为更好的选择是保留整个字典而不是分隔值。首先,在字典中的键之间进行迭代要容易得多。对我来说,容量没有区别。所以最大的好处是这个选项更容易维护,代码会更清晰,尤其是当你从缓存中获取数据时。

于 2013-06-05T11:49:14.803 回答