zoukankan      html  css  js  c++  java
  • 1.4redis小结--队列在抢购活动的实现思路

    思路:采用 客户队列,抢购结果队列,库存队列

    1.1用户排队

    <?php
    //连接本地的 Redis 服务 $redis = new Redis(); $redis->connect('127.0.0.1', 6379); //思路:采用 客户队列,抢购结果队列,库存队列 //登录验证 获取用户id,实现客户队列 $cus_id = uinfo(); //检测活动库存是否大于0 $stock = $redis->get('stock'); if($stock > 0){ //检测当前抢购活动排队人数 $cus_list_len = $redis->Llen('cus_panic_purchase'); if($cus_list_len> 5 ){ var_dump('当前排队人数过多,请稍后再试'); exit; }else{ //排队 $redis->lpush('cus_panic_purchase',$cus_id); var_dump('排队成功'); exit; } }else{ //库存为0,则提示抢购活动已过期 var_dump('商品已被抢购完啦'); exit; } //模拟登录验证获取用户id function uinfo(){ return $cus_id = rand(1,1000); }

    1.2脚本循环读取排队队列进行出队 下单 减库存

    //出队 先进先出
    $cus_id = $redis->rpop('cus_panic_purchase');
    
    //下单
    
    //减库存

    以上是秒杀活动采用队列的大概思路,当然,具体业务需要根据实际产品需求而定。

    比如后台对于秒杀活动的配置,秒杀活动完成后的活动数据统计分析,是否存在多个秒杀活动,秒杀活动的库存锁定的时间节点,库存是下单的时候减还是具体用户支付后减等等都是实际程序设计中需要考虑到的问题。

    可以对活动配置信息生成数组,然后序列化成json,存在到redis中。

    如有更好的思路欢迎多多交流!

  • 相关阅读:
    正则表达式语法参考
    Informix触发器实例
    .net core 时间与时间戳的转换
    获取对象字段的值
    .NET 6 运行在Win7 SP1上出错解决方法
    写在2012,腊月二十八
    2011年度工作&生活总结
    终于在博客园上开通自己的blog了
    观察进程的内存占用情况
    从一个登录页面浅淡MVVM(二)
  • 原文地址:https://www.cnblogs.com/mike1314/p/8509394.html
Copyright © 2011-2022 走看看