资讯专栏INFORMATION COLUMN

使用redis watch实现秒杀抢购,避免超卖

Galence / 907人阅读

摘要:涉及抢购秒杀抽奖抢票等活动时,为了避免超卖,那么库存数量是有限的,但是如果同时下单人数超过了库存数量,就会导致商品超卖问题。那么我们怎么来解决这个问题呢采用乐观锁,使用实现抢购数量抢购成功剩余数量用户列表手气不好,再抢购已卖光

涉及抢购、秒杀、抽奖、抢票等活动时,为了避免超卖,那么库存数量是有限的,但是如果同时下单人数超过了库存数量,就会导致商品超卖问题。那么我们怎么来解决这个问题呢?

采用乐观锁,使用redis实现
connect("127.0.0.1", 7379);
$redis->watch("mywatchlist");
$len = $redis->hlen("mywatchlist");
$rob_total = 100; //抢购数量
if ($len < $rob_total) {
    $redis->multi();
    $redis->hSet("mywatchlist", "user_id_" . mt_rand(1, 999999), time());
    $rob_result = $redis->exec();
    file_put_contents("log.txt", $len . PHP_EOL, FILE_APPEND);
    if ($rob_result) {
        $mywatchlist = $redis->hGetAll("mywatchlist");
        echo "抢购成功" . PHP_EOL;
        echo "剩余数量:" . ($rob_total - $len - 1) . PHP_EOL;
        echo "用户列表:" . PHP_EOL;
        print_r($mywatchlist);
        exit;
    } else {
        exit("手气不好,再抢购!");
    }

} else {
    exit("已卖光");
}

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/22870.html

相关文章

  • 使用redis watch实现秒杀抢购避免超卖

    摘要:涉及抢购秒杀抽奖抢票等活动时,为了避免超卖,那么库存数量是有限的,但是如果同时下单人数超过了库存数量,就会导致商品超卖问题。那么我们怎么来解决这个问题呢采用乐观锁,使用实现抢购数量抢购成功剩余数量用户列表手气不好,再抢购已卖光 涉及抢购、秒杀、抽奖、抢票等活动时,为了避免超卖,那么库存数量是有限的,但是如果同时下单人数超过了库存数量,就会导致商品超卖问题。那么我们怎么来解决这个问题呢?...

    jasperyang 评论0 收藏0
  • Redis 实现秒杀

    摘要:秒杀接下来是关键的一步,使用的是的命令获取商品,利用的是的原子性。好的方面是秒杀成功的数量是准确的,没有超卖。参考资料实现高并发下的抢购秒杀功能基于云原生的秒杀系统设计思路秒杀架构设计 导语 秒杀想必大家都了解,在短时间内请求访问会激增,同时要保证不会超卖和数据的准确,对于技术方面还是有些考验的。可惜的是,一直没有机会在项目中实现。再看了一些资料后,打算实验下。以下代码仅为测试所用,环...

    zilu 评论0 收藏0
  • Redis 实现秒杀

    摘要:秒杀接下来是关键的一步,使用的是的命令获取商品,利用的是的原子性。好的方面是秒杀成功的数量是准确的,没有超卖。参考资料实现高并发下的抢购秒杀功能基于云原生的秒杀系统设计思路秒杀架构设计 导语 秒杀想必大家都了解,在短时间内请求访问会激增,同时要保证不会超卖和数据的准确,对于技术方面还是有些考验的。可惜的是,一直没有机会在项目中实现。再看了一些资料后,打算实验下。以下代码仅为测试所用,环...

    MycLambert 评论0 收藏0
  • SegmentFault 技术周刊 Vol.37 - 分布式缓存利器:Redis

    摘要:持久化到中反向代理的负载均衡基于的集群搭建如何实现从中订阅消息转发到客户端的扩展是阻塞式,使用订阅发布模式时,会导致整个进程进入阻塞。缓存是用于解决高并发场景下系统的性能及稳定性问题的银弹。 showImg(https://segmentfault.com/img/bVYE6k?w=900&h=385); Redis 是由意大利程序员 Salvatore Sanfilippo(昵称:a...

    kuangcaibao 评论0 收藏0
  • SegmentFault 技术周刊 Vol.37 - 分布式缓存利器:Redis

    摘要:持久化到中反向代理的负载均衡基于的集群搭建如何实现从中订阅消息转发到客户端的扩展是阻塞式,使用订阅发布模式时,会导致整个进程进入阻塞。缓存是用于解决高并发场景下系统的性能及稳定性问题的银弹。 showImg(https://segmentfault.com/img/bVYE6k?w=900&h=385); Redis 是由意大利程序员 Salvatore Sanfilippo(昵称:a...

    binaryTree 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<