如何组织和维护缓存键并刷新它们?

时间:2011-07-16 22:37:32

标签: c# caching azure entity-framework-4.1 appfabric

我们的系统在Azure上使用AppFabric缓存,我们有多种共享相同缓存值的应用和角色。我正在寻找关于如何组织所有密钥的一些建议,并且还能够在更改条目时使其无效/刷新。

我已经开始考虑使用一组带有创建键的方法的静态类。例如:

string CreateUserByIdKey(int userId) - Returns "User_5"
string CreateWidgetsByCompanyKey(int companyId) - Returns "Widgets_Company_5"

这样我就可以使用半结构方法在不同的应用程序中创建和使用密钥。但这并不是非常优雅和可维护的。它还要求我创建特殊的刷新方法,以便在数据更新时知道哪些键需要失效。

有什么更好的方法可以做到这一点?

1 个答案:

答案 0 :(得分:1)

我们的方法是使用带有策略扩展名的CacheManager。 CacheManager位于解决方案的核心部分,该核心通过所有角色引用。

对于共享的内容,例如生成缓存密钥的策略,甚至端点名称,我们都有WellKnownComponents的列表。这是TT生成的文件(好吧,文件),可以使用部分类进行扩展。

我要做的是将缓存键ID生成函数添加到我熟知的组件类中,然后通过应用程序引用,例如

var seeker = CacheManager.Get<RequestOnly>(WellKnownComponents.Seeker.Caching.GetSeekerKey(seekerId), () => GetSeekerFromDataBase(seekerId));

这大致就是我们这样做的方式。是的,你仍然需要特殊的冲洗方法来进行失效,但好处是你可以将它们分开并在重要且相关的地方进行组合(例如你的一个组件,而不是解决方案)。