PHP redis实现拼团,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');

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值