添加维护字段方案的疑问

来源:5-11 架构设计-超卖方案3-乐观锁方案概述

慕先生4616747

2019-03-03 22:43

你说的CAS的情况,先比较,在更新,说是需要一个维护字段(比如token)。也就是更新的时候 where 条件添加上刚才的查询中一下这个字段是不刚才查询到的.(where id= selectID & token=$res['token'])。是这样的吗?同时更新的时候把这个 token 也更新下。这种方案我还很少见。请问这种方案也是很常用的吗?谢谢

写回答 关注

1回答

  • 枫荇
    2019-03-04 11:28:13

    @Q646448149 您好!这个案例中关键的逻辑是对数据版本字段的维护和使用数据版本字段进行CAS。

    第一个问题:通过在where条件中添加数据版本字段的验证,来确定要更新的数据是最新的才能被修改;如果已经被修改,数据版本就会被更新,那么当前更新就要被更新失败。

    第二个问题:这种方案不通用,但在很多场景中来代替锁,简单说就是避免使用锁来优化性能。


3小时极简春节抢红包之Go的实战

【毕业设计】春节抢红包业务资金交易秒杀系统的架构设计和Golang实战

12160 学习 · 32 问题

查看课程

相似问题