/**
* 使用redis中setnx防止併發二次寫入
* @return bool
*/
public function lock()
{
$uid = '110';
$lock_key = 'lock_' . $uid;
$is_lock = Redis::setnx($lock_key, 1); // 加鎖
if ($is_lock) { // 獲取鎖許可權
// 程式邏輯處理:
DB::table('test')->insert(['user_name' => '1234']);
// 釋放鎖
Redis::del($lock_key);
} else {
// 防止死鎖
if (Redis::ttl($lock_key) == -1) {
Redis::expire($lock_key, 5);
}
return true; // 獲取不到鎖許可權,直接返回
}
}
本作品採用《CC 協議》,轉載必須註明作者和本文連結