php+redis实现简单秒杀抢购功能
2021-01-23 22:13
标签:注意 Nid 简单 ber push out timeout 秒杀 color 注意事务的运用 参考:https://www.cnblogs.com/junyi-bk/p/11981512.html php+redis实现简单秒杀抢购功能 标签:注意 Nid 简单 ber push out timeout 秒杀 color 原文地址:https://www.cnblogs.com/zqblog1314/p/13276320.html 例子一:
php
//php秒杀 redis并发处理
function miaoshao(){
$redis = new Redis;//diy redis操作类
//连接
$redis->connect(‘127.0.0.1‘, 6379,30);
//设置密码
$redis->auth(‘junyi‘);
//获取库存出售的数量,默认为空
$kuchun = $redis -> get(‘kucun‘);
$total = 100;
if ($kuchun $total){
//有库存
$redis -> watch(‘kucun‘);
//开启事务
$redis->multi();
$redis->set("kucun",$kuchun+1);
//执行事务
$result = $redis->exec();
if($result){
//剩余数量
$number = $total - ($kuchun +1);
//$openid 用户id
$openid = $number;
$redis-> hset("list","user_".$openid,$kuchun);
//获取抢购成功的用户
$data = $redis-> hgetall(‘list‘);
var_dump($data);
var_dump($number);
}else{
var_dump(‘手气很差哦,再试一下!‘);
}
}else{
var_dump(‘已经被抢光了‘);
}
}
例子二:
php
//第一步:添加库存到链表里面;
$redis = new Redis();
$redis->connect(‘ ‘);
$redis->auth(‘ ‘);
//添加100件商品for($i=1;$ilpush(‘goods_store‘,1);
}
//第二步:开始抢购了
//设置库存的失效时间;
$redis->setTimeout(‘goods_store‘,30);
//第三步:执行抢购的代码
$id = $redis->lpop(‘goods_store‘);
if(!$id){
echo ‘buy fail‘;
}else {
echo ‘buy success‘;
}
?>
文章标题:php+redis实现简单秒杀抢购功能
文章链接:http://soscw.com/index.php/essay/46054.html