<?php
/**
* 1.把需要秒杀的商品放到队列当中;
* 2.抢购开始,设置库存的缓存周期
* 3.消耗队列中的商品
* 4.限制同一个ip只能抢购一次
*/
header("content-type:text/html;charset=utf-8");
$redis = new Redis();
$redis->connect("localhost","6379");
//设置20件商品加入队列中
$num = 20;
//把商品件数添加到list中
for ($i=0; $i < $num; $i++) {
$redis->lpush("shopList",$i);
}
//返回列表key的长度
echo $redis->llen("shopList");
?>
<?php
//抢购开始,设置库存的缓存周期
//设定key的一个活动时间(s)
$redis->setTimeout("shopList",60);
?>
<?php
header("content-type:text/html;charset=utf-8");
//获取用户的ip
$ip = $_SERVER['REMOTE_ADDR'];
$redis = new Redis();
$redis->connect("localhost","6379");
//判断此ip是否已经抢购过
if($redis->sIsMember("ipSet",$ip) === false){
//抢购商品
$status = $redis->rPop("shopList");
if($status === false){
//抢购失败返回的false
echo "已经抢购结束,请下次再来!";
}else{
//抢购成功返回的是商品ID
echo "您是第".$status."位抢到的用户";
//抢购成功把ip地址记录到set中
$redis->sAdd("ipSet",$ip);
}
}else{
//已经抢购过的ip
echo "不要再来了,给别人留点吧";
}