当前位置: 首页 > 后端技术 > PHP

PHPREDIS分布式锁

时间:2023-03-29 20:49:22 PHP

一个简单的PHPREDIS分布式锁类,外部使用获取锁和释放锁来处理自己的业务逻辑key*@param$expirestringlocktime*@returnbool获取结果失败,成功则为false,true在外面做业务逻辑处理*/publicfunctionlock($key,$expire){//判断参数是否为emptyif(empty($key)||empty($expire)){returnfalse;$redis=Predis::getInstance();$result=$redis->get($key);if(!$result){//如果没有值,设置值$lock_result=SETNX($key,time()+$expire);if($lock_result){//锁成功设置过期时间$redis->expire($key,$expire);返回真;}}else{//如果有值,判断是否过期,防止死锁if($redis->get($key)getSet($key,time()+$expire)expire($key,$expire);返回真;}}}返回假;}/***释放锁函数*@param$keystring锁键*@returnbool释放结果*/publicfunctionrelease($key){$redis=Predis::getInstance();如果($redis->ttl($key)){$redis->del($key);}返回真;}}github地址