【发布时间】:2011-11-14 03:15:45
【问题描述】:
我正在尝试弄清楚是否可以同时使用悲观并发模型和本地缓存。
当您启用了本地缓存并使用了 GetAndLock 和 PutAndUnlock 等悲观并发方法时,锁定/获取/放置发生在哪里?在缓存集群上,还是在本地缓存中?如果它发生在集群上,它是否会自动将更改与本地缓存同步?
【问题讨论】:
标签: .net caching concurrency appfabric
我正在尝试弄清楚是否可以同时使用悲观并发模型和本地缓存。
当您启用了本地缓存并使用了 GetAndLock 和 PutAndUnlock 等悲观并发方法时,锁定/获取/放置发生在哪里?在缓存集群上,还是在本地缓存中?如果它发生在集群上,它是否会自动将更改与本地缓存同步?
【问题讨论】:
标签: .net caching concurrency appfabric
是的,您可以使用本地缓存和悲观并发。实际上,您可以使用任何一种并发,因为正如您在问题中所暗示的那样,所有并发解析都发生在“主”缓存中。如果您考虑一下,这是唯一可以发生的地方-想象一下,如果您有两台服务器在其本地缓存中锁定了项目,并且同时解锁了-“主”缓存将不知道哪个一个是“真正的”项目,然后在集群中复制,因此所有悲观锁/乐观版本检查都必须在中心进行。
一旦发生并发解析(无论哪种模型),本地缓存都会重新同步,但这取决于您如何配置本地缓存。本地缓存的项目可以超时并从 master 刷新,或者 master 可以在更新项目时向本地缓存发出通知。 this page 对此进行了一些讨论,并详细说明了如何在应用程序中配置它。或 web.config here。
【讨论】: