PHP 使用redis防止大并发下二次写入(redis 锁)
//避免频繁请求 (ThinkPHP) $sessID = 'register' . $data['mobile_code_id'] . $data['mobile'] . $data['password']; if(!(new \think\session\driver\Redis())->lock($sessID,3)){ throw new \Exception('频繁请求'); }
//自己定义 $lock_key = 'LOCK_PREFIX' . $redis_key; $is_lock = $redis->setnx($lock_key, 1); // 加锁 if($is_lock == true){ // 获取锁权限 // 设置过期时间,防止死任务的出现 $redis->expire($lock_key, 5); }else{ return true; // 获取不到锁权限,直接返回 }