開發中不可避免的是碰到併發請求,在數據嚴謹性的要求不高時,咱們也不須要作什麼處理,但若是碰到數據嚴謹性很是高的時候(例如:用戶金額,秒殺產品的庫存...),咱們就須要慎重處理了。redis
解決方案多種多樣,下面是一個redis鎖的解決方案,直接看示例代碼(PHP)併發
$key = 'lock_key'; try { if (!$redis->sadd($key, 1)) { // 加鎖 throw new Exception('你來慢一步'); } /** * 業務邏輯實現 */ $redis->del($key); // 解鎖 } catch (Exception $e) { // 異常處理 }
稍微須要注意的是,在加鎖這一步,若是用set來實現,是有坑的、、、至於什麼坑,你能夠寫個代碼實現下就知道了。。。spa