Redis 鎖的實現方案

 開發中不可避免的是碰到併發請求,在數據嚴謹性的要求不高時,咱們也不須要作什麼處理,但若是碰到數據嚴謹性很是高的時候(例如:用戶金額,秒殺產品的庫存...),咱們就須要慎重處理了。redis

 

解決方案多種多樣,下面是一個redis鎖的解決方案,直接看示例代碼(PHP)併發

 

$key = 'lock_key';

try {
    if (!$redis->sadd($key, 1)) { // 加鎖
        throw new Exception('你來慢一步');
    }

    /** 
     * 業務邏輯實現
    */

    $redis->del($key); // 解鎖
} catch (Exception $e) {
    // 異常處理
}

 

稍微須要注意的是,在加鎖這一步,若是用set來實現,是有坑的、、、至於什麼坑,你能夠寫個代碼實現下就知道了。。。spa

相關文章
相關標籤/搜索