根据这个MSDN 页面,“Put 通过将版本信息作为可选参数来支持乐观并发;只有当要替换的对象是相同版本时,Put 才会成功。”
当版本确实不同时,有什么好的解决方案?缓存客户端是 WCF 服务。
如果版本不同,则表明另一个客户端在您之前进入并更新了缓存的对象。您可以通过捕获DataCacheException
您对 Put 的调用中将抛出的 that 并检查enum 来检测这一点 -ErrorCode
是要测试的特定条目。捕获此错误表明当前客户端正在使用的缓存项目已过时,您可能应该从客户端获取最新版本(您可能希望或可能不希望向用户显示),然后再尝试再次进行更改.DataCacheErrorCode
CacheItemVersionMismatch
这就是为什么在乐观并发场景中,您希望获取缓存的对象,进行更改,然后尽快将其返回到缓存中——您不希望在任何类型的长时间运行的进程中保留一个版本或你开始看到这些问题。