自己手動實現分布式加鎖
//1、獲取一把鎖,只要鎖的名字一樣,就是同一把鎖
RLock lock = redisson.getLock("my-lock");
//2、加鎖
lock.lock();//阻塞式等待
try{
System.out.println("加鎖成功,執行業務。。。"+Thread.currentThread().getId());
Thread.sleep(3000);
}catch(Exception e){
}finally{
//3、解鎖
System.out.println("釋放鎖。。。"+Thread.currentThread().getId());
lock.unlock();
}
可以看到Redisson加鎖和我們之前手動加鎖的操作一樣,需要保證KEY值唯一
Redisson即使沒有手動解鎖,Redisson也會自動刪鎖,
1、Redisson解決了鎖的自動續期,如果業務超長,運行期間會自動給鎖續上新的30s,不用擔心業務時間長,鎖自動過期被刪掉,默認加的鎖都是30s。
2、加鎖的業務只要運行完成,就不會給當前鎖續期,即使不手動解鎖,鎖默認在30s以后自動刪除,就解決了在高並發場景下的一些問題。