由于数据库查询的及插入的操作 耗费的实际时间要耗费比redis 要多,

导致 多人查询时库存有,但是实际插入数据库时却超卖

redis 会有效的减少相关的延时,对于并发量相对较少的 可以一用

 1     public function buy($goods_id = 0){
2 if(!$goods_id){
3 die("商品不存在!");
4 }
5 $redis = new Redis();
6 $redis->connect('127.0.0.1',6379);
7 $stock = 0;
8 if(!$redis->get("gid".$goods_id)){
9 $stock = get_stock($goods_id); //从数据看获取实际库存
10 $redis->set("gid".$goods_id,$stock);
11 }else{
12 $stock = $redis->get("gid".$goods_id);
13 }
14
15 if($stock > 0){
16 //逻辑操作 代码
17 //coding here...
18 set("gid".$goods_id,$stock-1);
19 }else{
20 die("已卖完!");
21 }
22 }

转载自:https://www.cnblogs.com/zuochuang/p/7262399.html

 
 

使用 redis 减少 秒杀库存 超卖思路 (转)的更多相关文章

  1. 使用 redis 减少 秒杀库存 超卖思路

    由于数据库查询的及插入的操作 耗费的实际时间要耗费比redis 要多, 导致 多人查询时库存有,但是实际插入数据库时却超卖 redis 会有效的减少相关的延时,对于并发量相对较少的 可以一用 publ ...

  2. mysql处理高并发,防止库存超卖

    先来就库存超卖的问题作描述:一般电子商务网站都会遇到如团购.秒杀.特价之类的活动,而这样的活动有一个共同的特点就是访问量激增.上千甚至上万人抢购一个商品.然而,作为活动商品,库存肯定是很有限的,如何控 ...

  3. <转> mysql处理高并发,防止库存超卖

    先来就库存超卖的问题作描述:一般电子商务网站都会遇到如团购.秒杀.特价之类的活动,而这样的活动有一个共同的特点就是访问量激增.上千甚至上万人抢购 一个商品.然而,作为活动商品,库存肯定是很有限的,如何 ...

  4. MYSQL处理高并发,防止库存超卖(图解)

    抢购场景完全靠数据库来扛,压力是非常大的,我们在最近的一次抢购活动改版中,采用了redis队列+mysql事务控制的方案,画了个简单的流程图: 先来就库存超卖的问题作描述:一般电子商务网站都会遇到如团 ...

  5. Mysql在高并发情况下,防止库存超卖而小于0的解决方案

    背景: 本人上次做申领campaign的PHP后台时,因为项目上线后某些时段同时申领的人过多,导致一些专柜的存货为负数(<0),还好并发量不是特别大,只存在于小部分专柜而且一般都是-1的状况,没 ...

  6. mysql悲观锁处理赠品库存超卖的情况

    处理库存超卖的情况前,先了解下什么是乐观锁和悲观锁,下面的几篇博客已经介绍的比较详细了,我就不在赘述其原理了 [MySQL]悲观锁&乐观锁 对mysql乐观锁.悲观锁.共享锁.排它锁.行锁.表 ...

  7. MySQL防止库存超卖方法总结

    订单超卖问题是涉及到库存项目的重中之重,这里我总结一下常用的方法 1.简单处理[update & select 合并](乐观锁) beginTranse(开启事务)$num = 1; try{ ...

  8. 使用redis防止抢购商品超卖

    前言: redis不仅仅是单纯的缓存,它还有一些特殊的功能,在一些特殊场景上很好用. 本篇博文用来测试下使用redis来防止抢购商品超卖问题. 内容: 使用redis的list进行测试 思路是设置一个 ...

  9. redis防止抢购商品超卖

    前言: redis不仅仅是单纯的缓存,它还有一些特殊的功能,在一些特殊场景上很好用. 本篇博文用来测试下使用redis来防止抢购商品超卖问题. 内容: 使用redis的list进行测试 思路是设置一个 ...

随机推荐

  1. 思考一个问题STM32的

    如果一个定时中断刚刚进入中断服务函数 但是服务函数执行时间太长   又一次触发了中断 会怎样

  2. Qt 设置窗体透明

    一.前言 在音频开发中,窗体多半为半透明.圆角窗体,如下为Qt 5.5 VS2013实现半透明方法总结. 二.半透明方法设置 1.窗体及子控件都设置为半透明 1)setWindowOpacity(0. ...

  3. Action4D:人群和杂物中的在线动作识别:CVPR209论文阅读

    Action4D:人群和杂物中的在线动作识别:CVPR209论文阅读 Action4D: Online Action Recognition in the Crowd and Clutter 论文链接 ...

  4. tensorflow-yolov4实施方法

    tensorflow-yolov4实施方法 tensorflow-yolov4-tflite YOLOv4: Optimal Speed and Accuracy of Object Detectio ...

  5. 3D点云完美匹配

    3D点云完美匹配 The Perfect Match: 3D Point Cloud Matching with Smoothed Densities 地址链接: http://openaccess. ...

  6. Minkowski修剪

    Minkowski修剪 Minkowski修剪 Class MinkowskiEngine.MinkowskiPruning 从MinkowskiEngine.SparseTensor中删除指定的坐标 ...

  7. 【NX二次开发】Block UI 选择对象

    属性说明 属性   类型   描述   常规           BlockID    String    控件ID    Enable    Logical    是否可操作    Group    ...

  8. Linux查看与设定别名

    1.alias :查看系统中所有的命令别名 2.设定别名 alias 别名='原命令' 3.删除别名 unalias 别名 4.使别名永久生效    vi  ~/.bashrc  写入这个文件中即可永 ...

  9. linux常用命令及一些静态动态库相关知识

    1 查找然后grep,最后在复制到特定目录 find . -depth -name *.java | xargs grep -i lijiangtao | awk -F ":" ' ...

  10. etcd 添加用户,授权特定目录

    适用场景 多组共用etcd集群,创建一个新用户.新目录,让这个新用户只有新目录的使用权限. 命令和顺序 创建目录,注意此处是v2 curl -u root:pwd http://host:2379/v ...