[小程序云开发]解决并发下数据不一致问题
常见于抢购、人数限制等场景。
1. 利用原子操作符
借助原子操作符,可以实现。原子操作符包括:
- inc
- mul
- addToSet
const _ = db.command;
let res = await db.collection('my_collection').where({
_id: id,
limit: _.lt(10)
}).update({
data: {
limit: _.inc(1)
}
})
通过使用原子操作符
inc
,避免并发写的影响。小程序云开发文档是这样描述的:
用 inc 指令而不是取出值、加 10 再写进去的好处在于这个写操作是个原子操作,不会受到并发写的影响,比如同时有两名用户 A 和 B 取了同一个字段值,然后分别加上 10 和 20 再写进数据库,那么这个字段最终结果会是加了 20 而不是 30。如果使用 inc 指令则不会有这个问题。2. 利用事务 【[小程序云开发]解决并发下数据不一致问题】直接参考小程序云开发文档就好。
( https://developers.weixin.qq....)
需要注意的是,事务中不支持批量操作,仅支持单记录操作。
推荐阅读
- 一个小故事,我的思考。
- 家乡的那条小河
- 一个人的碎碎念
- 野营记-第五章|野营记-第五章 讨伐梦魇兽
- 昨夜小楼听风
- 赠己诗
- 2021-02-17|2021-02-17 小儿按摩膻中穴-舒缓咳嗽
- 基于微信小程序带后端ssm接口小区物业管理平台设计
- 2019.4.18感恩日记
- 那件我们忽略的小事叫感恩