释放锁del(key)
否,被其他线程使用
定义常量:等待锁最大时间:timeout=60s等待周期:waittime=50ms锁有效期:expiretime=30s锁名字:key=xxxx_123锁值:lockTag=currenttime+expiretime
判断oldTime与newOldTime是否相等
是,获得锁
是否成功?0/1
执行业务逻辑
重启去获取锁
是,锁未失效
lockTag是否大于currenttime
结束
oldTime=get(key)获取锁值,与currentTime比较
开始
Redis分布式锁流程图From: Owen Jia
等待waittime
否,锁失效
否,锁被使用
oldTime是否大于currentTime