版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Qiang1370373713/article/details/76283377
1.创建数据库
CREATE TABLE `redis_queue` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`uid` int(11) NOT NULL DEFAULT '0',
`time_stamp` varchar(24) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=88 DEFAULT CHARSET=utf8;
2.存入redis
<?php
$redis = new \Redis();
$redis->connect('127.0.0.1',6379);
$redis_name = "miaosha";
//最好压测工具
for ($i=0;$i<100;$i++){
$uid = rand(100000, 999999);
//$uid = $_GET['uid'];//接收用户ID
$num = 10;
if($redis->lLen($redis_name)<10){
$redis->rPush($redis_name,$uid.'%'.microtime());
echo $uid."秒杀成功";
}else{
echo "秒杀结束";
}
}
$redis->close();
?>
3.获取redis存入数据库记录
<?php
include 'class/db.php';
$redis = new \Redis();
$redis->connect('127.0.0.1',6379);
$redis_name = "miaosha";
$db = DB::getIntance();
//死循环
while(true){
$user = $redis->lPop($redis_name);
//判断值是否存在
if(!$user || $user == 'nil'){
sleep(2);
continue;
}
$user_arr = explode('%',$user);
$insert_data = array(
'uid'=>$user_arr[0],
'time_stamp'=>$user_arr[1],
);
$res = $db->insert('redis_queue',$insert_data);
if(!$res){
$redis->rPush($redis_name,$user);
}
sleep(2);
}
$redis->close();
?>
4.服务器执行 php xxxx.php入库程序,死循环去查询redis数据