一.涉及两个redis命令
1.获取锁
SET 锁的key 锁的value NX EX 秒数
举例:
SET:Redis 的基础命令,用于设置键值对lock:键名(这里表示锁的名称,所有竞争同一资源的客户端需使用相同的键名)thread1:键的值(通常用于标识锁的持有者,如客户端 ID、线程 ID 等,用于释放锁时验证身份)NX:选项(全称NOT EXISTS),表示 " 仅在键lock不存在时才执行设置操作 ",确保同一时间只有一个客户端能获取到锁(互斥性核心)EX 10:选项,表示给键lock设置过期时间为 10 秒(EX单位是秒,PX则表示毫秒),避免客户端因异常未释放锁而导致死锁
2.释放锁
DEL lock
这里表示释放上面的lock锁(删除key为lock的键值对)。
二.流程图

三.使用Java代码,使用一下Redis分布式锁
1.创建接口ILock
java
public interface ILock {
/**
* 尝试获取锁
* @param timeoutSec 锁的失效时间,过期则自动释放
* @return true代表获取锁成功;false代表获取锁失败
*/
boolean tryLock(long timeoutSec);
/**
* 释放锁
*/
void unlock();
}
