赞
踩
1.为什么需要分布式锁?
- public synchronized void test() {
- System.out.println("获取到锁");
- }
- public void test2() {
- synchronized (Test.class) {
- System.out.println("获取到锁");
- }
- }
假设我们把上述代码部署到多台服务器上,这个互斥锁还能生效吗?答案是否定的,这时分布式锁应运而生。
2.Redis分布式锁?
接下来我给大家讲解完整的演变过程,让大家更深刻的理解分布式锁。
Redis setnx
线程1申请加锁,这时没有人持有锁,加锁成功:
- 127.0.0.1:6379> setnx lock 1
- (integer) 1
线程2申请加锁,此时发现有人持有锁未释放,加锁失败:
- 127.0.0.1:6379> setnx lock 1
- (integer) 0
线程1执行完成业务逻辑后,执行DEL命令释放锁:
- 127.0.0.1:6379> del lock
- (integer) 1
存在问题:
①假设线程1执行到一半,系统挂了,这时锁还没释放,就会造成死锁。
②如果Re
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。