Laravel拼团功能
场景
- 场景
- Laravel 中 sharedLock 与 lockForUpdate 的区别
- MySQL测试
- Laravel测试
-
- 真实场景,防止用户重复提现
拼团功能,当 A 客户开团之后(两人团),如果 B 和 C 同时支付,如何规避两人同时将拼团人数增加。
Laravel 中 sharedLock 与 lockForUpdate 的区别- sharedLock 对应的是 LOCK IN SHARE MODE
- lockForUpdate 对应的是 FOR UPDATE
sharedLock 与 lockForUpdate 相同的地方是,都能避免同一行数据被其他 transaction 进行 update。
不同的地方是:
- sharedLock 不会阻止其他 transaction 读取同一行
- lockForUpdate 会阻止其他 transaction 读取同一行
(需要特别注意的是, 普通的非锁定读取依然可以读取到该行, 只有 sharedLock 和 lockForUpdate 的读取会被阻止。)