serverredis【Q020】如何实现一个分布式锁

如何实现一个分布式锁

Issue 欢迎在 Gtihub Issue 中回答此问题: Issue 21

Author 回答者: zhangxiaokun

mysql,redis,zk redis效率较高

Author 回答者: shfshanyue

多节点部署就会产生分布式问题,分布式锁由两个词组成,分布式

  1. 分布式: 解决分布式问题就要找一个大家都能够访问到的中介,比如 RedisConsulZookeeper
  2. 锁: 解决原子问题,当不存在时便加锁,不存在加锁 要作为原子进行操作

以下是一个 redis 实现的操作

# EX 100:100s 的过期时间
# NX: 如果不存在 User:10086,设置成功返回 OK,否则返回 nil,也就是说 100s 之内只有第一次操作返回 OK
set User:10086 Random:shanyue EX 100 NX