问题的描述是这样的:url接口的形式向用户返回100条数据库中的A表(某字段排序后)中status为0的数据,用户要是在web上操作了某条数据以后就改为1。
我想解决的问题是如何在多用户高并发的情形,用户请求该接口获得分配的数据如何处理能保证都是唯一的。处理了以后,不一定需要向每个用户都是固定的100条数据。但要保证每个用户得到的数据和其他用户的数据不能有重复。要求是不考虑sql server 数据库的特性。像存储过程中事务,取了这100,然后再修改这100条数据的其他字段。这样sql 在用户并发时候,这100条数据另外的用户就无法获取。因为sql server 中的更新锁的现在。不知道是不是这样的。但是这样处理的话,在并发性不是很高,比如A得到了100条数据,在web上操作,status还没有改为1。 然后B用户请求URL接口欲获得100条数据,这个时候也有可能B用户的100条数据在A用户中有重复的。(这里这种情形我不知道描述的对不对。)
完全使用C#语言的特性完成。我之前处理的是mongodb数据库。之前项目经理说可以使用httpRuntime.cache 增加 移除 比较的形式解决。但是我一直不成功。
写的web api 接口,使用Task模拟高并发测试,感觉数据有重复。
非常感谢大家。
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货