自己做网站用花钱吗,北京有几个区哪个区最好,网站开发职业环境分析,网站备案后更换主机使用Redission获取锁
RLock lock redisson.getLock(my-lock);
一、Redisson使用不指定锁过期时间的方式加锁#xff1a;
lock.lock();
特点#xff1a;
1.使用Redisson加的锁#xff0c;具有自动续期机制#xff0c;如果业务运行时间较长#xff0c;运行…使用Redission获取锁
RLock lock redisson.getLock(my-lock);
一、Redisson使用不指定锁过期时间的方式加锁
lock.lock();
特点
1.使用Redisson加的锁具有自动续期机制如果业务运行时间较长运行期间会自动给锁续期默认加锁时间都是30秒LockWatchDogTimeOut看门狗的默认时间不用担心业务执行时间长锁默认在30S以后被自动删掉
2.加锁的业务只要运行完成就不会给当前锁续期即使不手动解锁锁转为在设置的过期时间到来后自动删除
3.如果占锁成功就会启动一个定时任务【重新给锁设定过期时间新的过期时间就是看门狗的默认时间】每隔10s自动执行
总结有看门狗机制自动给锁续期续期
二、lock方法里指定过期时间来加锁
lock.lock(10, TimeUnit.SECONDS);
特点
1.在指定的时间到来时自动解锁设置的过期时间一定要大于业务执行时间需要实际测试得出
2.过期时间到了后不会自动续期
3.如果传递了锁的过期时间就发给redis的lua执行成本进行占锁默认过期时间就是我们指定的时间
总结没有看门狗机制到期自动删除锁
推荐使用lock.lock(10, TimeUnit.SECONDS);加锁。
三、读写锁
//获取写锁
RReadWriteLock readWriteLock redisson.getReadWriteLock(rw-lock);
RLock rLock readWriteLock.writeLock()获取读锁
RReadWriteLock readWriteLock redisson.getReadWriteLock(rw-lock);
RLock rLock readWriteLock.readLock();
特点
1.锁用于保证一定能读到最新数据修改期间写锁是个互斥锁排他锁锁未释放读锁和其他写锁均需等待
2.读锁是共享锁在各个读锁之间相当于无锁可以并发读只会在redis中记录好所有当前的读锁他们都会同时加锁成功但是在读写锁并行且读锁操作在前写锁在后写锁也需等待。
四、闭锁RCountDownLatch
闭锁设置闭锁后在设置的条件生效期间锁会一值等待直到设置的条件满足了才释放锁。