我只使用 Redis 作为我的数据库,我的客户是 ServiceStack.Redis。问题是,如果两个并发请求需要更新一个键,那么它可能是一个竞争条件。例如
A:
- int a = 获取密钥
- 多
- a = a - 100
- 设置密钥 a
- 执行
乙:
- int a = 获取密钥
- 多
- a = a - 100
- 设置密钥 a
- 执行
如果origin“key”是1000。如果speration A和B被序列化,那么“key”这两个操作的正确结果是800。但是如果A和B同时发生。在 A 可以提交之前,操作 B 从“key”中获取值 1000,并将 900 设置为“key”。那不是我想要的。如何防止这种竞争条件,使用“WATCH”?