采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
可能出现问题的场景
线程1在执行lock的时候,redis服务端已经执行成功,但是因为网络原因,响应还没有返回给客户端,过了expireTime时间以后,响应终于回来了,对于线程1来说,它是拿到了分布式锁的,但是此时的锁已经是失效的了!如果此时又来个线程2申请加锁,显然也能获取锁,因为线程1的锁已经失效了,此时就会有2个线程同时获取锁。
Redis好像无法实现严格意义上的分布式锁,不知道老师有什么见解?谢谢师兄
这种可以算redis故障了,不应该过了expireTime时间以后才响应。
最近也有看一些文章,看来Redis实现分布式锁还是有些瑕疵
https://xiaomi-info.github.io/2019/12/17/redis-distributed-lock/
师兄,这位同学描述的场景有点问题,我觉得正确的应该是这种场景,线程1 加锁 超过时间,自动释放锁,线程2获取锁,此时线程1完成业务再释放锁,此时锁为线程2的锁,但是线程2 并没有自己释放,此时线程3再获取锁,此时线程2 与3 同时有锁,这样描述才对。
登录后可查看更多问答,登录/注册
分布式六大命门逐一剖析破解,廖师兄带你寻找最优解
756 6
846 6
1.1k 5
1.0k 4