Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
wushizhenking
advanced-java
提交
fc36ecc3
A
advanced-java
项目概览
wushizhenking
/
advanced-java
与 Fork 源项目一致
从无法访问的项目Fork
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
A
advanced-java
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
未验证
提交
fc36ecc3
编写于
4月 30, 2020
作者:
何
何正海
提交者:
GitHub
4月 30, 2020
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Update distributed-lock-redis-vs-zookeeper.md
上级
2d7423f1
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
2 addition
and
1 deletion
+2
-1
docs/distributed-system/distributed-lock-redis-vs-zookeeper.md
...distributed-system/distributed-lock-redis-vs-zookeeper.md
+2
-1
未找到文件。
docs/distributed-system/distributed-lock-redis-vs-zookeeper.md
浏览文件 @
fc36ecc3
...
@@ -17,7 +17,7 @@
...
@@ -17,7 +17,7 @@
#### redis 最普通的分布式锁
#### redis 最普通的分布式锁
第一个最普通的实现方式,就是在 redis(ps:
2.6.12版本开始支持) 里使用
`SET`
命令和该命令的NX和PX选项创建一个 key,这样就算加锁。(ps:不能使用SETNX和EXPIRE来加锁和设置锁的过期时间,因为这两个命令需要执行两次,且没在一个事务里,如果在2.6.12版本之前要使用
redis实现分布式锁,需要将SETNX和EXPIRE放到一个事务里,例如通过执行lua脚本)
第一个最普通的实现方式,就是在 redis(ps:
since 2.6.12版本开始) 里使用
`SET`
命令和该命令的NX和(PX或EX)选项创建一个 key,这样就算加锁。(ps:不能使用SETNX和EXPIRE来实现分布式锁,因为这两个命令需要执行两次,且没在一个事务里,如果需要使用2.6.12版本之前的
redis实现分布式锁,需要将SETNX和EXPIRE放到一个事务里,例如通过执行lua脚本)
```
r
```
r
...
@@ -27,6 +27,7 @@ SET resource_name my_random_value NX PX 30000
...
@@ -27,6 +27,7 @@ SET resource_name my_random_value NX PX 30000
执行这个命令就 ok。
执行这个命令就 ok。
-
`NX`
:表示只有
`key`
不存在的时候才会设置成功。(如果此时 redis 中存在这个 key,那么设置失败,返回
`nil`
)
-
`NX`
:表示只有
`key`
不存在的时候才会设置成功。(如果此时 redis 中存在这个 key,那么设置失败,返回
`nil`
)
-
`EX 30`
:意思是 30s 后锁自动释放。别人创建的时候如果发现已经有了就不能加锁了。
-
`PX 30000`
:意思是 30s 后锁自动释放。别人创建的时候如果发现已经有了就不能加锁了。
-
`PX 30000`
:意思是 30s 后锁自动释放。别人创建的时候如果发现已经有了就不能加锁了。
释放锁就是删除 key ,但是一般可以用
`lua`
脚本删除,判断 value 一样才删除:
释放锁就是删除 key ,但是一般可以用
`lua`
脚本删除,判断 value 一样才删除:
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录