Redis 锁的实现方案

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

 

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

 

$key = 'lock_key';

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

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

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

 

稍微需要注意的是,在加锁这一步,如果用set来实现,是有坑的、、、至于什么坑,你可以写个代码实现下就知道了。。。

 

posted @ 2017-11-03 16:08  传VV说  阅读(178)  评论(0编辑  收藏  举报