背景 最近写了一个定时任务,期望是同一时间只有一台机器运行即可.因为是应用是在集群环境下跑的,所以需要自己实现类一个简陋的Redis单机锁. 原理 主要是使用了Redis的SET NX特性,成功设置的那个客户端则被认为拿到了锁,没有设置成功的其他客户单则认为没有拿到锁. 在分布式环境下使用锁是挺危险的一件事情,我们可能会遇到一些问题: Redis单点故障: 应用与Redis网络不通: 应用异常导致锁没有得到释放: 误操作锁. 对于问题1,避免Redis单点故障,可以使用Redis分布式锁的实现,…