前言
基本原理都是:用余光状态值表示锁,对锁的占用和释放经过状态值标识。sql
##Redisget
操做流程:原理
- 先试用setnx尝试获取锁,若是返回0说明获取锁失败。
- 发送Get检查锁是否超时,若是没超时,则等待或重试。
- 若是已超时,经过getset尝试获取锁。
- 若是getset拿到的时间戳是超时的说明,成功获取的锁了。
- 若是被其余客户端抢先,getset活动的时间戳是未超时的,则说明获取锁失败,继续等待重试。
关键词:im
- lockKey;锁键;
- expireMse = 60*1000;锁超时时间,防止锁后执行等待;
- timeoutMsecs 锁等待时间;
Zookeeper
Mysql