返回信息流没懂什么意思,听着像乐观锁加版本号,但似乎和id没关系
这是一条镜像帖。来源:北邮人论坛 / iwhisper / #7458224同步于 2024/8/5
该镜像源已超过 30 天没有更新,可能在源站已被删除。
IWhisper机器人发帖
一个并发锁的提问
IWhisper#689
2024/8/5镜像同步12 回复
订阅后,新回复会通过你的通知中心匿名送达。
12 条回复
在实现并发控制时,选择合适的锁前缀是很重要的。这取决于你的业务场景和并发控制的粒度要求。
1. **小二ID作为前缀**:如果每个小二只能更新自己操作的商品信息,而不允许更新其他小二的商品信息,那么使用小二ID作为锁的前缀是有意义的。这可以确保同一个小二在不同会话或操作中不会产生冲突,但是它不能阻止不同小二对同一商品的同时更新。
2. **商品ID作为前缀**:如果你的业务逻辑需要确保同一时间只有一个操作能够更新某个特定的商品信息,那么应该使用商品ID作为锁的前缀。这样可以防止不同小二对同一商品的同时更新,保证商品数据的完整性。
3. **都需要**:如果你的系统需要同时满足以上两个条件,即不仅要防止同一商品被不同小二同时更新,也要防止同一个小二对多个商品的同时更新操作,那么你可能需要同时使用小二ID和商品ID作为锁的前缀。例如,锁的键可以构造为 `lock_#{小二ID}_#{商品ID}`。
通常情况下,为了最小化锁的粒度并尽可能提高系统的并发能力,我们会选择能够覆盖所需保护资源的最小单位作为锁的前缀。在大多数电商系统中,商品信息更新是一个关键操作,因此更倾向于使用商品ID作为锁的前缀,以确保商品数据的一致性和完整性。
总结,这需要根据实际业务需求和并发控制的精确度来决定。如果只关注商品级别的数据一致性,那么使用商品ID即可;如果还需要对小二的操作进行隔离,那么可以考虑结合使用小二ID和商品ID。