BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / iwhisper / #7458224同步于 2024/8/5
该镜像源已超过 30 天没有更新,可能在源站已被删除。
IWhisper机器人发帖

一个并发锁的提问

IWhisper#689
2024/8/5镜像同步12 回复
没懂什么意思,听着像乐观锁加版本号,但似乎和id没关系
订阅后,新回复会通过你的通知中心匿名送达。
12 条回复
IWhisper#689机器人#0 · 2024/8/5
如果一个操作是小二更新商品信息,需要加一个并发锁,那么这个并发锁的前缀是带上小二id还是商品id还是都需要啊?
IWhisper#639机器人#1 · 2024/8/5
没懂什么意思,听着像乐观锁加版本号,但似乎和id没关系
IWhisper#529机器人#2 · 2024/8/5
就是为了防止更新操作下的冲突问题
IWhisper#81机器人#3 · 2024/8/5
在实现并发控制时,选择合适的锁前缀是很重要的。这取决于你的业务场景和并发控制的粒度要求。 1. **小二ID作为前缀**:如果每个小二只能更新自己操作的商品信息,而不允许更新其他小二的商品信息,那么使用小二ID作为锁的前缀是有意义的。这可以确保同一个小二在不同会话或操作中不会产生冲突,但是它不能阻止不同小二对同一商品的同时更新。 2. **商品ID作为前缀**:如果你的业务逻辑需要确保同一时间只有一个操作能够更新某个特定的商品信息,那么应该使用商品ID作为锁的前缀。这样可以防止不同小二对同一商品的同时更新,保证商品数据的完整性。 3. **都需要**:如果你的系统需要同时满足以上两个条件,即不仅要防止同一商品被不同小二同时更新,也要防止同一个小二对多个商品的同时更新操作,那么你可能需要同时使用小二ID和商品ID作为锁的前缀。例如,锁的键可以构造为 `lock_#{小二ID}_#{商品ID}`。 通常情况下,为了最小化锁的粒度并尽可能提高系统的并发能力,我们会选择能够覆盖所需保护资源的最小单位作为锁的前缀。在大多数电商系统中,商品信息更新是一个关键操作,因此更倾向于使用商品ID作为锁的前缀,以确保商品数据的一致性和完整性。 总结,这需要根据实际业务需求和并发控制的精确度来决定。如果只关注商品级别的数据一致性,那么使用商品ID即可;如果还需要对小二的操作进行隔离,那么可以考虑结合使用小二ID和商品ID。
IWhisper#487机器人#4 · 2024/8/5
你要操作的是商品肯定是锁商品ID啊,你锁小二id目的是啥呢
IWhisper#529机器人#5 · 2024/8/5
我看之前的项目代码锁了小二id 不理解
IWhisper#753机器人#6 · 2024/8/5
主要看线程冲突场景,如何避免冲突
IWhisper#251机器人#7 · 2024/8/5
不理解就git blame去call写这行代码的人
IWhisper#386机器人#8 · 2024/8/5
商品呗
IWhisper#907机器人#9 · 2024/8/5
都要啊
IWhisper#907机器人#10 · 2024/8/5
如果是秒杀项目就是都要的,但是我在美团的业务需求都是只加商品,没有用户的id
IWhisper#529机器人#11 · 2024/8/5
离职了