1、根据库存,生成库存链表
public function createList() {
$key = "order_list:";
//库存数
$num = 100;
for ($i = 0; $i < $num; $i++) {
$this->redis->lPush($key, 1);
}
echo "success";
die;
}
2、抢购开始代码
public function buy() {
$user_id = rand(1, 100);
$key = "order_list:";
$user_key = "user_list:";
$result = $this->redis->blPop($key, 1);
if (!$result) {
echo "抢购失败";
die;
} else {
//判断是否已经抢购成功了
$user = $this->redis->sIsMember($user_key, $user_id);
if ($user) {
$this->redis->lPush($key, 1);
echo "您已抢购成功";
die;
} else {
$user = $this->redis->sAdd($user_key, $user_id);
echo "抢购成功";
die;
}
}
}
本文详细介绍了一种基于Redis的抢购系统实现方法,通过创建库存链表并利用Redis的原子操作确保高并发下的抢购公平性和效率。文章提供了具体的PHP代码示例,包括库存初始化和抢购流程。
1092

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



