获取到一个锁的实例以后,如果acquire乐成,则将acquired置为True
恣意一个锁的实例想要release锁的话,先判断acquired是否为True,如果为True才允许释放,如果为False直接抛出异常“不能释放没有获取的锁”,以此制止错误释放
超时时间过一半以后,实例会主动延长超时时间到原本设置的超时时间,制止因为超时时间的设置把原本需要很长时间处理的任务的锁错误的释放掉了
使用setnx和expire的问题:setnx和expire是两条指令而不是原子指令。
解决办法:使用set扩展参数替换:set key value ex 5 nx