php使用redis watch秒杀抢购

<?php
header("content-type:text/html;charset=utf-8");
$redis = new redis();
$result = $redis->connect('127.0.0.1', 6379);
$gots = $redis->get("gots");  // 已抢数量
$robTotal = 100;  // 抢购总数量
if ($gots < $robTotal) {
    $redis->watch("gots");  // 监听key
    $redis->multi();  // 开启事务
    //插入抢购数据  
    $redis->hSet("userList", "user_id_" . mt_rand(1, 9999), time());
    $redis->set("gots", $gots + 1);  // 抢购到+1
    $robResult = $redis->exec();  // 执行事务
    if ($robResult) {
        echo "抢购成功!<br/>";
        echo "剩余数量:" . ($robTotal - ($redis->get("gots"))) . "<br/>";
        echo "用户列表:<pre>";
        var_dump($redis->hGetAll("userList"));
    } else {
        echo "手气不好,再抢购!";
        exit;
    }
}else {
    echo "已售罄";
    exit;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值