通過Redis高版本的原子命令
jedis.set(lockName, "", "NX", "PX", expireTime);
代碼分析
- redis的set命令可以攜帶複雜參數,第一個是鎖的key,第二個是value,可以存放獲取鎖的客戶端ID,通過這個校驗是否當前客戶端獲取到了鎖,第三個參數取值NX/XX,第四個參數 EX|PX,第五個就是時間
- NX:如果不存在就設置這個key XX:如果存在就設置這個key
- EX:單位爲秒,PX:單位爲毫秒
- 這個命令實質上就是把我們之前的setNx和expire命令合併成一個原子操作命令,不需要我們考慮set失敗或者expire失敗的情況