我试图找出是否有可能使用悲观并发模型和本地缓存在同一时间。通过AppFabric缓存,您可以在启用本地缓存的情况下使用并发方法吗?
当你启用了本地缓存,并且使用了像GetAndLock和PutAndUnlock这样的悲观并发方法时,锁定/获取/放置发生在哪里?在缓存集群上还是在本地缓存中?如果发生在群集上,它是否会自动将更改与本地缓存同步?
我试图找出是否有可能使用悲观并发模型和本地缓存在同一时间。通过AppFabric缓存,您可以在启用本地缓存的情况下使用并发方法吗?
当你启用了本地缓存,并且使用了像GetAndLock和PutAndUnlock这样的悲观并发方法时,锁定/获取/放置发生在哪里?在缓存集群上还是在本地缓存中?如果发生在群集上,它是否会自动将更改与本地缓存同步?
是的,你可以使用本地缓存和悲观并发。事实上,你可以使用并发性,因为,当你暗示的问题,所有的并发解决发生在“主”缓存。其中,如果你想想看,这是可以发生的唯一的地方 - 想象一下,如果你有这样已经锁定在其本地缓存,同时被解锁该条目的两个服务器 - “主”缓存不知道是哪个其中一个是真正的项目,然后在群集中进行复制,所以所有悲观锁定/乐观版本检查都必须在中心进行。
一旦并发分辨率(取模型)已经发生,本地高速缓存将被重新同步,但是这取决于你如何配置你的本地缓存。本地高速缓存的项目可以超时并且可以从主服务器刷新,或者当项目更新时,主服务器可以向本地高速缓存发出通知。在this page上有一些关于此的讨论,以及如何在应用程序中配置此功能的详细信息。或者web.config here。
谢谢,这是有道理的。我怀疑是这样,但在任何地方的文档中找不到它。所以“Get”首先检查本地缓存,但“GetAndLock”绕过它。 – brainiac10
@brainiac Yup :-) – PhilPursglove