<?php $redis = new Redis(); $host = 'localhost'; $port = 6379; $redis->connect($host,$port); //redis 是单线程 if($redis->exists('lockFlag')){ return json_encode(array('status'=>false,'msg'=>'请稍后重试')); }else{ try{ //加锁 $redis->set('lockFlag','isLocked',10); //获取库存数 $stock = $redis->get('stock'); if($stock > 0) { $redis->decrBy('stock',1); //执行相应逻辑,尽量简单 }else{ //优化:库存不足情况下,直接提示相应信息,不用操作redis了,在外面另外加判断 return json_encode(array('status'=>false,'msg'=>'库存不足')); } } finally { $redis->del('lockFlag'); } } ?>
使用php和redis实现简单的分布式锁
最新推荐文章于 2025-06-10 11:04:19 发布