AppFabric缓存依赖项

时间:2012-11-12 06:21:11

标签: appfabric appfabric-cache

有没有办法可以将对象放入具有依赖项的缓存中?

例如,如果我将ObjectB放入具有ObjectA依赖性的缓存中,那么当ObjectA过期或删除它时,ObjectB也会自动删除?

我知道我可以创建区域和标记项目来创建我的依赖项,但我真的不想这样做,因为区域只存在于集群中的一个缓存服务器上,这种情况会破坏分布式和可扩展的缓存点溶液

如果我不能添加一个直接的依赖项我想我可以通过添加我的对象与某种键命名约定来创建依赖项。

例如。使用键'ObjectA'添加ObjectA 使用键'ObjectA_ObjectB'

添加ObjectB

但是当我想要依赖于ObjectA的所有对象到期时,我需要根据密钥的通配符搜索来获取。这可能吗?

有任何想法或建议吗?

2 个答案:

答案 0 :(得分:1)

不,目前AppFabric API中不支持依赖项。不幸的是,也没有办法以你建议的方式搜索键: - (

答案 1 :(得分:0)

虽然AppFabric是免费的,但如果你想构建可扩展的应用程序,这个初始的成本优势并不是很好,因为App Fabric没有很多功能,比如数据库依赖功能。

如您所述,基于密钥的依赖关系将一个缓存项与缓存中的另一个项相关联。当特定项目更改时,它会使依赖项无效。每当从缓存中删除或更新该项时,关联的对象将过期。基于密钥的依赖是级联的。例如,如果key1依赖于key2,则key2依赖于key3,而key3依赖于key4,那么删除key4将导致key1,key2和key3的到期。

除了基于密钥的依赖项之外,您还可以使用其他依赖项(如基于文件)(使您的缓存对象依赖于外部文件,如果文件已更新或删除,则会删除缓存中的依赖对象) ),数据库依赖关系(将缓存的项与数据库同步,因此数据库中的任何更改都会从缓存中删除相关的缓存对象),自定义依赖关系(您可以根据应用程序逻辑使对象失效)。

NCache that is a distributed caching software就是这样一种产品,可根据您的应用需求提供一整套依赖功能。