并发方法
Microsoft AppFabric 1.1 for Windows Server 缓存 支持乐观和悲观并发模型。以下部分介绍缓存客户端方法如何与这些模型协调一致。有关并发的详细信息,请参阅并发模型(AppFabric 1.1 缓存)。
乐观并发模型
在乐观并发模型中,对缓存对象的更新不需要锁定。而是,缓存客户端首先读取要更新的对象的版本,并一起发送该版本信息以及更新的对象。如果发送的版本与对象的当前版本相匹配,则系统只更新该对象。每次对对象的更新都会改变其版本号。这会阻止更新覆盖其他人的更改。
方法 | 描述 |
---|---|
从设计上来说,不采用任何锁定;如果项目存在,则 Get 始终成功。如果对象正在更新,则 Get 方法不会等待,并且只返回对象的当前版本。 |
|
返回所有 DataCacheItem 对象。除了缓存对象和其他信息(例如标记)之外,还返回有关对象的版本信息。 |
|
可用于检查数据源中缓存对象是否已更改。为最小化网络流量,仅当较新版本可用时才返回缓存对象。 |
|
不存在任何乐观并发相关的过载。Add 成功或失败。 |
|
通过将版本信息作为可选参数来支持乐观并发;仅当要替换的对象为相同版本时,Put 才成功。 |
|
通过将版本信息作为可选参数来支持乐观并发;仅当要删除的对象为相同版本时,Remove 才成功。 |
悲观并发模型
在悲观并发模型中,客户端明确锁定要执行操作的对象。锁定被释放之前,请求锁定的其他操作将被拒绝(系统不会阻止请求)。对象被锁定时,将返回锁定句柄(作为输出参数)。需要锁定句柄来解锁对象。如果客户端在释放被锁定的对象之前失败,则将提供超时以释放锁定。锁定的对象永远不会过期,但如果在其过期时间之后解锁,它们可能立即过期。
备注
不支持事务跨越操作。使用缓存的应用程序负责确定锁定的顺序并检测死锁(如果有)。
警告
仍然可以使用 Put 方法将缓存中锁定的对象替换为任何缓存客户端。启用了缓存的应用程序负责对使用悲观并发模型的项目一致使用 PutAndUnlock。
下表显示了您可以用于锁定和解锁对象的方法。
方法 | 描述 |
---|---|
返回并锁定缓存对象(如果存在)。只要锁定有效,同一对象上的其他 GetAndLock 方法调用都将失败。不会阻止常规 Get 方法调用,并且始终访问缓存对象的最新版本。 |
|
更新锁定的对象,然后释放锁定。从 GetAndLock 获取的锁定句柄是一个必需的参数,并且必须与要成功锁定的对象的锁定句柄相匹配。 |
|
如果锁定句柄参数与锁定对象的参数相匹配,则可明确解锁缓存对象。一旦解锁后,Unlock 还支持扩展当前项目的过期时间以帮助阻止其过期(如果在过期时间后解锁)。 |
另请参阅
概念
类概述
基本缓存方法
基于标记的方法
配置方法
使用基本缓存方法
AppFabric 缓存概念(AppFabric 1.1 缓存)
2012-03-05