Redis案例——商品秒杀,购物车

秒杀案例:

 1 <?php
 2     header("content-type:text/html;charset=utf-8");
 3     $redis = new redis();
 4     $result = $redis->connect(‘10.10.10.119‘, 6379);
 5     $mywatchkey = $redis->get("mywatchkey");
 6     $rob_total = 100;   //抢购数量
 7     if($mywatchkey<$rob_total){
 8         $redis->watch("mywatchkey");
 9         $redis->multi();
10         //设置延迟,方便测试效果。
11         sleep(5);
12         //插入抢购数据
13         $redis->hSet("mywatchlist","user_id_".mt_rand(1, 9999),time());
14         $redis->set("mywatchkey",$mywatchkey+1);
15         $rob_result = $redis->exec();
16         if($rob_result){
17             $mywatchlist = $redis->hGetAll("mywatchlist");
18             echo "抢购成功!<br/>";
19             echo "剩余数量:".($rob_total-$mywatchkey-1)."<br/>";
20             echo "用户列表:<pre>";
21             var_dump($mywatchlist);
22         }else{
23             echo "手气不好,再抢购!";exit;
24         }
25     }  
时间: 2024-08-08 17:59:07

Redis案例——商品秒杀,购物车的相关文章

SpringBoot+RabbitMQ+Redis实现商品秒杀

业务分析 一般而言,商品秒杀大概可以拆分成以下几步: 用户校验 校验是否多次抢单,保证每个商品每个用户只能秒杀一次 下单 订单信息进入消息队列,等待消费 减少库存 消费订单消息,减少商品库存,增加订单记录 付款 十五分钟内完成支付,修改支付状态 创建表 goods_info 商品库存表 列 说明 id 主键(uuid) goods_name 商品名称 goods_stock 商品库存 package com.jason.seckill.order.entity; /** * 商品库存 */ pu

利用redis进行商品秒杀

这里是用redis的list集合开发,redis的list集合是具有原子性的,不必担心多线程时会取到重复的数据,即使请求同时到达也会排队进行数据操作 1. 先说说大概思路,关于数据库库存字段的设计.数据类型设置为非负数的unsigned,  如果秒杀的商品数量为50个. 秒杀开始前在redis里面建一个类型为list,键名为goods_num_商品id 的键,存入50个元素.元素值可随意取. 2. 建一个键名为user_id_商品id 的键,每次用户秒杀成功,把用户id存入里面,用来判断是否成功

redis解决商品秒杀问题

博主最近在项目中遇到了抢购问题!现在分享下.抢购.秒杀是如今很常见的一个应用场景,主要需要解决的问题有两个:1 高并发对数据库产生的压力2 竞争状态下如何解决库存的正确减少("超卖"问题)对于第一个问题,已经很容易想到用缓存来处理抢购,避免直接操作数据库,例如使用Redis.重点在于第二个问题常规写法:查询出对应商品的库存,看是否大于0,然后执行生成订单等操作,但是在判断库存是否大于0处,如果在高并发下就会有问题,导致库存量出现负数 优化方案1:将库存字段number字段设为unsig

redis案例 -- 商品拍卖

代码说明:在小程序上进行商品拍卖,多人抢拍,零秒抢拍,用redis(事物)来确认抢拍价格的准确性,什么不说了,附上代码! /** * 加价 */ public function plusPrice(){ $member_id = $this->userInfo['member_id']>0 ? $this->userInfo['member_id'] : 0; $mobile = $this->userInfo['member_name']>0 ? $this->use

用Redis轻松实现秒杀系统

秒杀系统的架构设计 秒杀系统,是典型的短时大量突发访问类问题.对这类问题,有三种优化性能的思路: 写入内存而不是写入硬盘 异步处理而不是同步处理 分布式处理 用上这三招,不论秒杀时负载多大,都能轻松应对.更好的是,Redis能够满足上述三点.因此,用Redis就能轻松实现秒杀系统. 用我这个方案,无论是电商平台特价秒杀,12306火车票秒杀,都不是事:) 下面介绍一下为什么上述三种性能优化思路能够解决秒杀系统的性能问题: 写入内存而不是写入硬盘 传统硬盘的读写性能是相当差的.SSD硬盘比传统硬盘

一篇文章教你如何用 Redis 轻松实现秒杀系统的构思

用 Redis 轻松实现秒杀系统的构思 前言: 秒杀系统的架构设计 秒杀系统,是典型的短时大量突发访问类问题.对这类问题,有三种优化性能的思路: **1. 写入内存而不是写入硬盘. 异步处理而不是同步处理. 分布式处理**用上这三招,不论秒杀时负载多大,都能轻松应对.更好的是,Redis能够满足上述三点.因此,用Redis就能轻松实现秒杀系统. 用我这个方案,无论是电商平台特价秒杀,12306火车票秒杀,都不是事:) 下面介绍一下为什么上述三种性能优化思路能够解决秒杀系统的性能问题: 写入内存而

PHP商品秒杀计时实现(解决大流量方案)

PHP商品秒杀功能我们多半以整点或时间点为例子,这样对于php来说处理不复杂,但有一个问题就是如果流量大要如何来处理,下面我们一起来看看解决办法. 要求要有小时分钟秒的实时倒计时的显示,用户端修改日期时间不会影响到倒计时的正常显示(也就是以服务器时间为准). 其实这和很多的考试等系统的时间限制功能同样的要求. 总不能用ajax每秒都获取服务器时间吧,所以实时倒计时一定要用javascript实现.这很简单,网上一大把的例子. 现在问题是解决用户端修改日期时间对我们的显示的影响. 解决的办法是计算

zookeeper实现商品秒杀抢购

package com.test; import java.io.IOException; import java.util.List; import java.util.concurrent.CyclicBarrier; import org.apache.zookeeper.CreateMode; import org.apache.zookeeper.KeeperException; import org.apache.zookeeper.WatchedEvent; import org.

电商网站中添加商品到购物车功能模块2017.12.8

前言: 电商网站中添加商品到购物车功能模块实现: 根据前一篇博客的介绍,我们看到淘宝网站为了保证购物车数据的同步,直接是强制用户必须登录才可以将商品加入购物车.而京东网站是用户在未登录的状态下也可以将商品加入到购物车,此时这个是保存在了cookie中,然后用户登录后,根据商品的id判断商品是否存在,将两个购物车的商品合并,形成最终的购物车商品. 本篇文章分两个模块,分别看下这两个功能是如何实现的: 1.必须在用户登录的前提下,才可以将商品加入到购物车列表 我们今天先看下淘宝网站的状态下的添加商品