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中。

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

  • 相关阅读:
    [hdu-2048] 神、上帝以及老天爷
    or1200中IMMU分析(续)
    Java Applet读写client串口——终极篇
    树莓派_Linux串口编程_实现自发自收
    2014百度实习生面试题(部分)具体解释
    Leetcode
    eclipse+webservice开发实例
    现有一些开源ESB总线的比較
    《HTML5 从入门到精通--7.6.3 单元格垂直跨度——rowspan》
    百度究竟是哪国的公司
  • 原文地址:https://www.cnblogs.com/mike1314/p/8509394.html
Copyright © 2011-2022 走看看