并发方法(Windows Server AppFabric 缓存)

Windows Server AppFabric 缓存支持乐观和悲观并发模型。以下部分介绍缓存客户端方法如何与这些模型协调一致。有关并发的详细信息,请参阅并发模型(Windows Server AppFabric 缓存)

乐观并发模型

在乐观并发模型中,对缓存对象的更新不需要锁定。而是,缓存客户端首先读取要更新的对象的版本,并一起发送该版本信息以及更新的对象。如果发送的版本与对象的当前版本相匹配,则系统只更新该对象。每次对对象的更新都会改变其版本号。这会阻止更新覆盖其他人的更改。

方法 描述

Get

从设计上来说,不采用任何锁定;如果项目存在,则 Get 始终成功。如果对象正在更新,则 Get 方法不会等待,并且只返回对象的当前版本。

GetCacheItem

返回所有 DataCacheItem 对象。除了缓存对象和其他信息(例如标记)之外,还返回有关对象的版本信息。

GetIfNewer

可用于检查数据源中缓存对象是否已更改。为最小化网络流量,仅当较新版本可用时才返回缓存对象。

Add

不存在任何乐观并发相关的过载。Add 成功或失败。

Put

通过将版本信息作为可选参数来支持乐观并发;仅当要替换的对象为相同版本时,Put 才成功。

Remove

通过将版本信息作为可选参数来支持乐观并发;仅当要删除的对象为相同版本时,Remove 才成功。

悲观并发模型

在悲观并发模型中,客户端明确锁定要执行操作的对象。锁定被释放之前,请求锁定的其他操作将被拒绝(系统不会阻止请求)。对象被锁定时,将返回锁定句柄(作为输出参数)。需要锁定句柄来解锁对象。如果客户端在释放被锁定的对象之前失败,则将提供超时以释放锁定。锁定的对象永远不会过期,但如果在其过期时间之后解锁,它们可能立即过期。

备注

不支持事务跨越操作。使用缓存的应用程序负责确定锁定的顺序并检测死锁(如果有)。

警告

仍然可以使用 Put 方法将缓存中锁定的对象替换为任何缓存客户端。启用了缓存的应用程序负责对使用悲观并发模型的项目一致使用 PutAndUnlock

下表显示了您可以用于锁定和解锁对象的方法。

方法 描述

GetAndLock

返回并锁定缓存对象(如果存在)。只要锁定有效,同一对象上的其他 GetAndLock 方法调用都将失败。不会阻止常规 Get 方法调用,并且始终访问缓存对象的最新版本。

PutAndUnlock

更新锁定的对象,然后释放锁定。从 GetAndLock 获取的锁定句柄是一个必需的参数,并且必须与要成功锁定的对象的锁定句柄相匹配。

Unlock

如果锁定句柄参数与锁定对象的参数相匹配,则可明确解锁缓存对象。一旦解锁后,Unlock 还支持扩展当前项目的过期时间以帮助阻止其过期(如果在过期时间后解锁)。

另请参阅

概念

类概述(Windows Server AppFabric 缓存)
基本缓存方法(Windows Server AppFabric 缓存)
基于标记的方法(Windows Server AppFabric 缓存)
配置方法(Windows Server AppFabric 缓存)
使用基本缓存方法(Windows Server AppFabric 缓存)
Windows Server AppFabric 缓存概念

  2011-12-05