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

本文关键字:刷新 缓存 何组织 维护 | 更新日期: 2023-09-27 18:02:13

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

我考虑过用一个静态类和一组创建键的方法。例如:

string CreateUserByIdKey(int userId) - Returns "User_5"
string CreateWidgetsByCompanyKey(int companyId) - Returns "Widgets_Company_5"
这样我就有了一种半结构化的方式来创建和使用跨不同应用程序的键。但是这感觉不是很优雅和可维护。它还要求我创建特殊的刷新方法,这些方法知道在数据更新时需要使这些键中的哪些失效。

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

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

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

对于共享的东西,比如生成缓存键的策略,甚至端点名称,我们有一个WellKnownComponents列表。这是一个TT生成的文件(好吧,是文件),可以用部分类对其进行扩展。

在你的情况下,我要做的是将缓存键id生成函数添加到我众所周知的组件类中,然后通过应用程序引用,例如

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

我们大概就是这样做的。是的,你仍然需要特殊的刷新方法来处理无效,但好处是你可以在重要和相关的地方分离和组合它们(例如,你的一个组件,而不是围绕解决方案)。