如何实现一个分布式锁
Issue 欢迎在 Gtihub Issue 中回答此问题: Issue 21
Author 回答者: zhangxiaokun
mysql,redis,zk redis效率较高
Author 回答者: shfshanyue
多节点部署就会产生分布式问题,分布式锁由两个词组成,分布式和锁
- 分布式: 解决分布式问题就要找一个大家都能够访问到的中介,比如
Redis
,Consul
,Zookeeper
- 锁: 解决原子问题,当不存在时便加锁,不存在 和 加锁 要作为原子进行操作
以下是一个 redis
实现的操作
# EX 100:100s 的过期时间
# NX: 如果不存在 User:10086,设置成功返回 OK,否则返回 nil,也就是说 100s 之内只有第一次操作返回 OK
set User:10086 Random:shanyue EX 100 NX