【问题标题】:AppFabric Cache DependencyAppFabric 缓存依赖
【发布时间】:2012-11-12 06:21:10
【问题描述】:

有什么方法可以将对象放入缓存中并具有依赖关系?

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

我知道我可以创建区域并标记项目以创建我的依赖项,但我真的不想这样做,因为区域仅存在于集群中的一个缓存服务器上,这会破坏分布式和可扩展的缓存解决方案。

如果我不能直接添加依赖项,我想我可以通过添加具有某种键命名约定的对象来创建依赖项来解决它。

例如。使用键“ObjectA”添加 ObjectA
使用键“ObjectA_ObjectB”添加 ObjectB

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

【问题讨论】:

    标签: appfabric appfabric-cache


    【解决方案1】:

    不,目前 AppFabric API 不支持依赖项。不幸的是,也没有办法按照您建议的方式搜索密钥:-(

    【讨论】:

    • 据我了解,如果您在 AppFabric 中使用区域,则可以遍历缓存项。
    【解决方案2】:

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

    正如您提到的,基于键的依赖项将一个缓存项与缓存中的另一项相关联。当特定项目更改时,它会使相关项目无效。每当从缓存中删除或更新该项目时,关联的对象将过期。基于键的依赖是级联的。比如key1依赖key2,key2依赖key3,key3依赖key4,那么去掉key4会导致key1、key2、key3过期。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-10-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-24
      相关资源
      最近更新 更多