Skip to content

Commit fc36ecc

Browse files
authored
Update distributed-lock-redis-vs-zookeeper.md
1 parent 2d7423f commit fc36ecc

File tree

1 file changed

+2
-1
lines changed

1 file changed

+2
-1
lines changed

docs/distributed-system/distributed-lock-redis-vs-zookeeper.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717

1818
#### redis 最普通的分布式锁
1919

20-
第一个最普通的实现方式,就是在 redis(ps:2.6.12版本开始支持) 里使用 `SET` 命令和该命令的NX和PX选项创建一个 key,这样就算加锁。(ps:不能使用SETNX和EXPIRE来加锁和设置锁的过期时间,因为这两个命令需要执行两次,且没在一个事务里,如果在2.6.12版本之前要使用redis实现分布式锁,需要将SETNX和EXPIRE放到一个事务里,例如通过执行lua脚本)
20+
第一个最普通的实现方式,就是在 redis(ps:since 2.6.12版本开始) 里使用 `SET` 命令和该命令的NX和(PX或EX)选项创建一个 key,这样就算加锁。(ps:不能使用SETNX和EXPIRE来实现分布式锁,因为这两个命令需要执行两次,且没在一个事务里,如果需要使用2.6.12版本之前的redis实现分布式锁,需要将SETNX和EXPIRE放到一个事务里,例如通过执行lua脚本)
2121

2222

2323
```r
@@ -27,6 +27,7 @@ SET resource_name my_random_value NX PX 30000
2727
执行这个命令就 ok。
2828

2929
- `NX`:表示只有 `key` 不存在的时候才会设置成功。(如果此时 redis 中存在这个 key,那么设置失败,返回 `nil`
30+
- `EX 30`:意思是 30s 后锁自动释放。别人创建的时候如果发现已经有了就不能加锁了。
3031
- `PX 30000`:意思是 30s 后锁自动释放。别人创建的时候如果发现已经有了就不能加锁了。
3132

3233
释放锁就是删除 key ,但是一般可以用 `lua` 脚本删除,判断 value 一样才删除:

0 commit comments

Comments
 (0)