WATCH mutexKey
EXISTS mutexKey//检查是否可以拿锁,改成get,可以判断是否连续拿锁
MULTI
SETEX mutexKey 60 "anything"
EXEC
//拿到锁后处理请求
DEL mutexKey //处理完后释放锁
拿到分布式锁的请求必须在60秒内处理完,比如这个超时时间设置为30秒,在go语言里面可以在context里面设置。
为什么要设置超时时间呢?
当拿到锁的实例挂了后,该锁会在60秒内释放,不至于出现长时间死锁。设置每个请求的处理时间为30秒,可以避免请求还没有处理完而锁却释放了。
也有人提到过加上版本号的方式来做分布式锁。