缓存 - IDictionary与顶级键前缀

时间:2013-06-05 11:24:32

标签: c# asp.net caching dictionary

当存储字典以便快速查找缓存时,我可以想到两个选项: 将整个字典存储为缓存项,或者使用标识符为缓存键添加前缀。

示例:

myPseudoCache.Put("Users", myDictionaryWithGuidsAsKeys);

VS

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

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

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

2 个答案:

答案 0 :(得分:2)

这实际上是一种权衡。如果myPseudoCache只包含'Users',你可以使用第二种方法 - 即myPseudoCache.Put("Users_" + userId, singleUserEntity);

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

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

答案 1 :(得分:1)

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