Redis 应用场景【商品拼团抢购】

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

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Redis;

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');
    }



}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值