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; // 獲取不到鎖權限,直接返回
        }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM