Redis 锁的实现方案

 开发中不可避免的是碰到并发请求,在数据严谨性的要求不高时,咱们也不须要作什么处理,但若是碰到数据严谨性很是高的时候(例如:用户金额,秒杀产品的库存...),咱们就须要慎重处理了。redis

 

解决方案多种多样,下面是一个redis锁的解决方案,直接看示例代码(PHP)并发

 

$key = 'lock_key';

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

    /** 
     * 业务逻辑实现
    */

    $redis->del($key); // 解锁
} catch (Exception $e) {
    // 异常处理
}

 

稍微须要注意的是,在加锁这一步,若是用set来实现,是有坑的、、、至于什么坑,你能够写个代码实现下就知道了。。。spa

相关文章
相关标签/搜索