参考答案
结论:利用Redis的SETNX(或SET NX)命令实现分布式锁,需注意原子性设置过期与释放。核心要点:1)加锁:SET key uniqueValue NX EX seconds,原子地设置不存在的键并带超时,避免死锁;早期SETNX+EXPIRE非原子不可用;2)解锁:用Lua脚本先比对value再DEL,防止误删其他客户端锁;3)缺陷:单实例故障切换可能丢锁,可升级Redlock或多机方案;4)对比:ZooKeeper锁基于临时节点更可靠但性能低。示例:if redis.set(key, uuid, nx=True, ex=30): do_work(); finally: eval(del_script, key, uuid)。