你们是怎么解决资金安全问题的
比如说余额更新,防止重复
悲观锁性能很差,我目前用的是乐观锁,但是用的是User::where(‘id’, $user->id)->where(‘version’, $user->version)->update([]);
这种方式
感觉不是很优雅,看手册,发现有一个原子锁,Cache::lock() 这个方案你们觉得怎么样
我就是用的 Cache::lock() 目前用了几年也没发现什么问题,用的docker 单个 redis 容器服务
放一段一直在用的代码仅供参考,这段代码是所有加减款都必须经过这个方法,所以只在加入这个lock,下面的代码类似于乐观锁,利用缓存键加入一个钱包ID,只会在这个钱包ID业务下lock,其它钱包ID是另一个lock键锁互不影响
if判断不那么优雅,按照文档说法应该放到catch里,但没啥问题,我也不想去改这个逻辑了。又不是不能用(图先欠着)
@yybawang 感谢无私分享啊,我研究研究
mark
Cache驱动是
Redis
的话 本质就是Redis分布式锁