File tree Expand file tree Collapse file tree 1 file changed +2
-1
lines changed Expand file tree Collapse file tree 1 file changed +2
-1
lines changed Original file line number Diff line number Diff line change 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 一样才删除:
You can’t perform that action at this time.
0 commit comments