0

我们正在研究使用 Windows AppFabric 迁移到分布式缓存。我们的 ASP.NET 4.0 应用程序当前有一个使用 MemoryCache 的缓存实现。

一个关键特性是,当项目被添加到缓存中时,会包含一个包含 ChangeMonitor 的 CacheItemPolicy:

 CacheItemPolicy policy = new CacheItemPolicy();
 policy.Priority = CacheItemPriority.Default;
 policy.ChangeMonitors.Add(new LastPublishDateChangeMonitor(key, item, GetLastPublishDateCallBack));

更改监视器在内部使用计时器来定期触发传递给它的委托——这通常是一种从数据库中获取值以进行比较的方法。

当一个项目被添加到缓存中时,策略和它的更改监视器就会被包括在内:

Cache.Add(key, item, policy);

早期查看 AppFabric 的 DataCache 类似乎表明,在将项目添加到缓存时可以包含时间跨度,而 CacheItemPolicy 本身不能。

是否有另一种方法可以在 AppFabric 中实现相同的 ChangeMonitor 类型的功能。也许是通知?

干杯

尼尔

4

1 回答 1

0

计算机科学中只有两个难题:缓存失效、命名和非一个错误。
菲尔·卡尔顿

不幸的是,AppFabric 不支持这种使缓存项失效的监视,同样不支持SqlCacheDependency.

但是,AppFabric 1.1 引入了对 read-through 和 write-behind 的支持。后写意味着您的应用程序首先更新缓存的数据而不是底层数据库,因此缓存始终保存最新版本(因此不需要监视底层数据);然后缓存异步更新底层数据库。要实现 read-through/write-behind,您需要创建一个继承自DataCacheStoreProvider( MSDN ) 的对象,并编写了解数据库结构以及如何更新它的 Read、Write 和 Delete 方法。

于 2013-02-06T16:40:48.083 回答