php+redis实现简单秒杀抢购功能
Posted 养猪至富
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php+redis实现简单秒杀抢购功能相关的知识,希望对你有一定的参考价值。
例子一:
注意事务的运用
<?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;$i<=100;$i++){
$redis->lpush(\'goods_store\',1);
}
//第二步:开始抢购了
//设置库存的失效时间;
$redis->setTimeout(\'goods_store\',30);
//第三步:执行抢购的代码
$id = $redis->lpop(\'goods_store\');
if(!$id){
echo \'buy fail\';
}else {
echo \'buy success\';
}
?>
以上是关于php+redis实现简单秒杀抢购功能的主要内容,如果未能解决你的问题,请参考以下文章