Redis简单实现秒杀功能

3 篇文章 0 订阅

BRPOP 是一个阻塞的列表弹出原语。 它是 RPOP 的阻塞版本,因为这个命令会在给定list无法弹出任何元素的时候阻塞连接。 该命令会按照给出的 key 顺序查看 list,并在找到的第一个非空 list 的尾部弹出一个元素。

<?php
$action = trim($_GET['action']);
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);

//【入列】,生产环境这个操作不可能给用户访问
if($action == "push") {
	//存放所有商品编号的数组,这里的数据可以来自数据库
	$goods = array(1001, 1002, 1003, 1004, 1005);
	foreach($goods as $value) {
		$redis->LPUSH('goods', $value);
	}
	echo "导入Redis队列数据成功!";
//【出列】
} else if($action == "pop") {
	try {
		//先进先出,采用BRPOP方法
		$fetch = $redis->BRPOP('goods', 10);
		//先进后出,采用BLPOP方法
		//$fetch = $redis->BLPOP('goods', 10);
		if(isset($fetch[1])) {
			echo "您抢到的商品编号为:" . $fetch[1]. "。";
		} else {
			echo "商品已抢完,谢谢!";
		}
	} catch(Exception $e) {
		//这里记录日志
	}
}
?>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值