Redis 锁的实现方案
开发中不可避免的是碰到并发请求,在数据严谨性的要求不高时,我们也不需要做什么处理,但如果碰到数据严谨性非常高的时候(例如:用户金额,秒杀产品的库存...),我们就需要慎重处理了。
解决方案多种多样,下面是一个redis锁的解决方案,直接看示例代码(PHP)
$key = 'lock_key'; try { if (!$redis->sadd($key, 1)) { // 加锁 throw new Exception('你来慢一步'); } /** * 业务逻辑实现 */ $redis->del($key); // 解锁 } catch (Exception $e) { // 异常处理 }
稍微需要注意的是,在加锁这一步,如果用set来实现,是有坑的、、、至于什么坑,你可以写个代码实现下就知道了。。。
男儿走四方,何处不为家
死在哪里,葬在哪里,天下青山一样