Java事务和redis锁使用注意事项
如图中所示,register方法开启了事务,方法里面用到了redis锁,当执行完成后锁释放,事务提交。在这个过程看似没有什么毛病,但是在高并发场景下就会暴露出问题。请求A,B是同一个手机号来注册,A请求首先得到redis锁,B请求等待redis当A请求处理完成,A请求会先判断手机号是否存在(我们默认是没有注册过得手机号,所以是不存在,可以注册得,会将手机号落库)然后释放锁后。B请求可以拿到redis锁,但是此时A请求得事务可能还有提交成功(可以理解为正在提交,因为提交也是需要时间得,可能这个时间很短).
原创
2020-08-17 15:45:24 ·
1554 阅读 ·
2 评论