通过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失败的情况