请,先打开 redis 服务
参考网址 https://blog.youkuaiyun.com/jachinfang/article/details/91038623
tp3.2 中
1 执行秒杀过程
<?php
namespace Wxapi\Controller;
use Common\Controller\HomebaseController;
// lLen 返回列表长度
// Lpush 命令将一个或多个值插入到列表头部。 如果 key 不存在,一个空列表会被创建并执行 LPUSH 操作
// 抢购开始,设置库存的缓存周期
// 设定1个key的活动时间(s)
// $redis->setTimeout('goods_store',60); // 设置缓存周期,超时,释放锁,即删除键值对
class TestController extends HomebaseController{
public function index(){
$redis = new \Redis();
$redis->connect('127.0.0.1',6379);
//秒杀人数
$num = 10;
// 队列名称
$redis_name = 'miaosha';
for ($i=0; $i <100 ; $i++) { // 限制参加秒杀的人,只有100人能入场
$uid = rand(10000,99999);
echo ($redis->lLen($redis_name));
// 如果 miaosha 列表的长度<10,执行秒杀过程,不过不 flushall 的话,
redis 缓存里面就有值,
第1次刷新的时候,redis里面有10个值秒杀成功,
第2次刷新的话,就没有成功的了,
因为miaosha 里面已经有10个人了,
除非修改下面的临界值,新增人数,才可以继续有人秒杀成功
if($redis->lLen($redis_name)<=10){
$redis->lPush($redis_name,$uid.'%'.microtime());
echo '<br>';
echo $uid.'秒杀成功';
}else{
echo '<br>';
echo $i.'--'.'秒杀结束';
}
}
$redis->close();
}
}
2 打印秒杀结果
$redis = new \Redis();
$redis->connect('127.0.0.1',6379);
//秒杀人数
$num = 10;
// 队列名称
$redis_name = 'miaosha';
$data = $redis->lrange($redis_name,0,-1);
echo '<pre>';
print_r($data); // 打印出 10 个元素 这是打印出来的秒杀结果
$redis->close();