之前在工作的过程中做了很多锁的校验,有做并发锁校验,也有做分布式系统订单状态校验的锁,但是这次造成线上bug的代码是因为自己一个很小的失误,这次纪念一下。
这次是在解决批量去操作的时候,去将要批量操作的数据去锁住,防止并发操作(分布式系统交互要注意这种并发和幂等的操作)。这里在循环中去加了redis的锁,这个倒是美什么,但是在每一步循环结束的时候去释放了锁,而且在发现bug的时候居然定位了很久。这里去纪念一下这个锁。
获取锁的代码
正确的释放位置 之前在循环中释放redis的锁 肯定不能防住并发