zoukankan      html  css  js  c++  java
  • Redis 应用场景【商品拼团抢购】

    使用到 redis-list
    • llen 命令:获取列表的长度,如果列表key不存在那么也是返回0,如果给的key不是一个列表类型会返回一个错误
    • lpush命令:将值插入到列表头部,如果 key 不存在,一个空列表会被创建并执行 LPUSH 操作。 当 key 存在但不是列表类型时,返回一个错误。
    • lpop命令:命令用于移除并返回列表的第一个元素。(具有原子性)

    下面是用laravel写的一个简单demo

    
    <?php
    
    namespace AppHttpControllers;
    
    use IlluminateHttpRequest;
    use IlluminateSupportFacadesRedis;
    
    class BookController extends Controller
    {
    
    
        /**
         *  将商品库存加入redis列表
         */
        public function createStore()
        {
            $store = 10;//默认库存为10
            $hasOrder = Redis::llen('goods_store');//获取当前库存列队的长度
            $store = $store-$hasOrder;//剩余可预订
            while ($store)
            {
                Redis::lpush('goods_store',1);
                $store--;
            }
        }
    
    
        /**
         * 创建订单
         */
        public function createOrder()
        {
            if($this->checkStore())
            {
                //TODO 执行创建订单操作
                return '抢购成功';
            }
            else
            {
                //TODO 库存不足创建失败
                return '已经抢光了哦';
            }
        }
    
        /**
         * 检查库存
         */
        private function checkStore()
        {
           return Redis::lpop('goods_store');
        }
    
    
    
    }
    

    原文地址:https://segmentfault.com/a/1190000016251762

  • 相关阅读:
    IE11浏览器:请不要再叫我IE,谢谢
    Hadoop HA高可用搭建流程
    YARN
    MapReduce
    HDFS
    shell
    shell总结
    linux总结
    maven+log4j
    Spring
  • 原文地址:https://www.cnblogs.com/lalalagq/p/9971617.html
Copyright © 2011-2022 走看看