Redis做分布式锁
使用redis的setnx方法来保证锁的原子性,获取锁,执行结束释放锁
但是有几个问题
1.如果执行过程中有异常,锁就不会释放 。 可以使用try catch 解决
2.如果服务器挂了,锁也不会释放, 所以锁要设置超时时间 超过了会自动释放锁
3.设置了超时时间10秒,但执行过程很慢要15秒,10秒锁就过期,其他线程拿到会有问题
所以有一个线程观察超时时间到了,还没执行完给它延长超时时间
使用Redission
使用redis的setnx方法来保证锁的原子性,获取锁,执行结束释放锁
但是有几个问题
1.如果执行过程中有异常,锁就不会释放 。 可以使用try catch 解决
2.如果服务器挂了,锁也不会释放, 所以锁要设置超时时间 超过了会自动释放锁
3.设置了超时时间10秒,但执行过程很慢要15秒,10秒锁就过期,其他线程拿到会有问题
所以有一个线程观察超时时间到了,还没执行完给它延长超时时间
使用Redission