导致需求就不细说了,想必遇到过使用数据锁的场景。看了一些资料和其他代码,修改记录一下。SETNX的基本原理是利用Redis的SETNX命令来实现。当且仅当键不存在时,将键的值设置为值。如果给定的键已经存在,SETNX什么都不做。SETNX是“SETifNoteXists”(如果不存在则设置)的简写。返回值:设置成功,返回1。设置失败,返回0。当设置失败时,表示该锁正在使用中。在一定时间内,循环请求,直到释放当前锁,然后获取锁实例setnx($redisKey,$redisValue);if(!$flag){//获取锁失败usleep(200000);继续;}//这里操作,操作完成后释放锁$redis->del($redisKey);返回真;}//防止死锁,超过5分钟删除if(time()-$redis->get($redisKey)>(60*5)){$redis->del($redisKey);}returnfalse;}参考资料:SETNX。
