1、redis锁代码:
public function lock($key, $expire=5){
$is_lock = $this->_redis->setnx($key, time()+$expire);
if(!$is_lock){
$lock_time = $this->_redis->get($key);
if(time()>$lock_time){
$this->unlock($key);
$is_lock = $this->_redis->setnx($key, time()+$expire);
}
}
return $is_lock? true : false;
}
public function unlock($key){
return $this->_redis->del($key);
}
2、业务代码(php)
$lockKey = CacheKeyManage::getLianMaiLockKey($partyId);
$redis = new RedisHelperUtil();
$lock = $redis->lock($lockKey);
if(!$lock) {
for($i=0;$i<3;$i++){
$lock = $redis->lock($lockKey);
if($lock){
break;
}
sleep(1);
}
if(!$lock){
return self::setAndReturn(ErrorCode::ERR_OTHER_ERR,'服务器获取锁获取不到,$lockKey:'.$lockKey);
}
}
doAction.....