分布式锁本质是占茅坑 当别人也想上厕所 但发现坑位已经被占了 只能等你拉好 redis一般使用setnx来占坑 del去释放 。但如果在del之前 执行的逻辑出错了 可能导致del无法被调用 产生死锁。为了应对这样的问题 一般会设置个expire过期时间 就算del没被调用 在一定时间后也会释放锁。但setnx expire这个不是原子性的 如果在expire之前出故障线程挂了 那么也会有死锁 且expire要依赖setnx来执行 所以也不能使用事务来执行 但幸好redis已经把这个问题解决了 set ex nx就是一条原子指令 把setnx和expire结合在一起超时问题:分布式锁解决不了超...