Redis做分布式锁的原理: SETNX命令(SET if Not eXists) 当且仅当 key 不存在,将 key 的值设为 value ,并返回1;若给定的 key 已经存在,则 SETNX 不做任何动作,并返回0。 可以利用该命令,在对应的业务代码中做锁处理。 加锁,即,setnx,返回1,表示加锁成功,返回0,表示该段业务被上了锁。 在被锁的业务中进行循环获取,直至锁释放。 在加锁业务代码执行完毕之后,delete该key,释放对应的锁。 同时,要注意: 1、在redis做集群的时候,如果master挂掉,集群重新选择master,导致旧有master未能将数据同步至所有的集群环境。出现加锁失败。 2、在设置setnx命令时,切记加上expire time,防止死锁。 还有啊,在做锁的时候,千万不要用什么exist先判断存不存在,当作锁,这个会有并发的,我这边测试,会出现俩台机器一起跑的情况呢