什么事分布式锁的特点
分布式锁
分布式锁一般有如下的特点:
- 互斥性: 同一时刻只能有一个线程持有锁
- 可重入性: 同一节点上的同一个线程如果获取了锁之后能够再次获取锁
- 锁超时:支持锁超时,防止死锁
- 高性能和高可用: 加锁和解锁需要高效,同时也需要保证高可用,防止分布式锁失效
- 具备阻塞和非阻塞性:能够及时从阻塞状态中被唤醒
使用Redis实现分布式锁
从Redis2.6.12版本开始,SET命令的行为可以通过一系列参数来修改:
EX seconds
: 将键的过期时间设置为 seconds
秒。 执行 SET key value EX seconds
的效果等同于执行 SETEX key seconds value
。
NX
: 只在键不存在时, 才对键进行设置操作。 执行 SET key value NX
的效果等同于执行 SETNX key value
。
1 | 127.0.0.1:6379> set lock_sale_14 33 ex 30 nx |