<?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-01-04 14:42:58 发布
766

被折叠的 条评论
为什么被折叠?



