$redis = new Redis();
$redis->connect("127.0.0.1", "6379"); $redis->select(1);
//抢购成功列表
//var_dump($redis->lrange("miaosha",0,100));die;
$redis->flushdb(); //第一步,先加商品库存加入列
//设置库存数量
$goods_number =100;
//将100件商品存入redis列表中
for($i=0;$i < $goods_number; $i++ ){
//lpush从列表的头部添加元素
$redis->lPush("goods_store",1);
}
//返回列表的goods_store的长度
echo $redis->lLen("goods_store")."<br/>"; //第二步,抢购开始,设置库存的缓存周期(s)
//设定一个key的活动周期s
$redis->setTimeout("goods_store",60); //第三步,下单,下单前判断redis队列库存量
//从列表的头部删除一个元素,返回删除的元素
$n = 0; //验证
$i = 1000; //模拟多少人
while ($i--)
{
$n++;
//用户随机
$uid = mt_rand(1, 999999); $counts_good=$redis->lPop("goods_store");
if (!$counts_good )
{
echo "用户:".$uid."秒杀失败";
}
//下单
//设置秒杀成功队列
$redis_name = "miaosha";
if ( $redis->lLen($redis_name) < $goods_number)
{
$redis->rPush($redis_name, $uid);
echo "用户:" . $uid . "秒杀成功" . $n . "<br/>";
} }
echo "<b style='color:red;'>秒杀成功总数:".$redis->lLen($redis_name)."</b>";

php redis 秒杀demo的更多相关文章

  1. Redis秒杀系统架构设计-微信抢红包

    导读 前二天我写了一篇,Redis高级项目实战(点我直达),SpringBoot整合Redis附源码(点我直达),今天我们来做一下Redis秒杀系统的设计.当然啦,Redis基础知识还不过关的,先去加 ...

  2. Redis秒杀实战-微信抢红包-秒杀库存,附案例源码(Jmeter压测)

    导读 前二天我写了一篇,Redis高级项目实战(点我直达),SpringBoot整合Redis附源码(点我直达),今天我们来做一下Redis秒杀系统的设计.当然啦,Redis基础知识还不过关的,先去加 ...

  3. redis实现秒杀demo

    代码 package com.prosay.redis; import java.util.List; import redis.clients.jedis.Jedis; import redis.c ...

  4. 重学 Java 设计模式:实战享元模式「基于Redis秒杀,提供活动与库存信息查询场景」

    作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 程序员‍‍的上下文是什么? 很多时候一大部分编程开发的人员都只是关注于功能的实现,只 ...

  5. redis秒杀

    用Redis轻松实现秒杀系统 秒杀系统的架构设计 秒杀系统,是典型的短时大量突发访问类问题.对这类问题,有三种优化性能的思路: 写入内存而不是写入硬盘 异步处理而不是同步处理 分布式处理 用上这三招, ...

  6. asp.net core 上使用redis探索(3)--redis示例demo

    由于是基于.net-core平台,所以,我们最好是基于IDistributedCache接口来实现.ASP.NET-CORE下的官方redis客户端实现是基于StackExchange的.但是官方提供 ...

  7. redis秒杀系统数据同步(保证不多卖)

    东西不多卖 秒杀系统需要保证东西不多卖,关键是在多个客户端对库存进行减操作时,必须加锁.Redis中的Watch刚好可以实现一点.首先我们需要获取当前库存,只有库存中的食物小于购物车的数目才能对库存进 ...

  8. php+redis秒杀

    啥都不说了,看代码 前台: 包括开始和结束的秒杀时间,倒计时插件,统一看一遍再去写代码,思路会更清晰. js文件引入一个.min.js和一个插件js(在下面,自己复制吧) // JavaScript ...

  9. 解决redis秒杀超卖的问题

    我们再使用redis做秒杀程序的时候,解决超卖问题,是重中之重.以下是一个思路. 用上述思路去做的话,我们再用户点击秒杀的时候,只需要检测,kucun_count中是否能pop出数据,如果能pop出来 ...

随机推荐

  1. ansible(1)

    一.初识ansible 1.准备工作: 准备四台干净的虚拟机,如下: 192.168.133.129(主控节点,下面三个为被控节点) 192.168.133.130 192.168.133.131 1 ...

  2. maven 之nexus仓库管理_私服配置

    1.下载nexus私服 下载地址:http://www.sonatype.org/downloads/nexus-latest.war 2.解压 解压以下压缩包 3.配置环境变量 *\nexus-2. ...

  3. 【开发者笔记】归并排序过程呈现之java内置GUI表示

    在网上看到一个视频将各种排序用视频表示出来,配上音乐,挺好玩的样子,就算是不会编程的人看到也会觉得很舒服,碰巧我也正在写归并算法,于是就用java的GUI实现一个. 归并排序的时间复杂度是T(n)=O ...

  4. android 如何获取当前的Activity类名

    比如友盟统计页面停留时间,咱们需要知道当前页面停留了多久. 一般我们都有一个父类Activity,用下面的方法可以获得完整的包名.类名结构 this.getLocalClassName() 输出如下: ...

  5. Visual studio插件 Reshaper--- 常用快捷键

    快速修复 alt+enter (alt+enter唤出快速修复面板,上下方向键进行选择,再次敲击enter键确定修改) 跳转到对象声明 ctl+鼠标左键 重构-重命名(ctl+r+r) esc键退出 ...

  6. 1 安装企业wiki:confluence

    使用wget下载命令下载文件. 下载成功使用dir可以看到文件目录 [root@localhost usr]# diratlassian-confluence-6.3.1-x64.bin  bin  ...

  7. Linux 系统日志管理

    Linux rsyslogd服务及启动方法 在 CentOS 6.x 中,日志服务已经由 rsyslogd 取代了原先的 syslogd.Red Hat 公司认为 syslogd 已经不能满足工作中的 ...

  8. AVAudioSession(1):iOS Audio Session 概览

    本文转自:AVAudioSession(1):iOS Audio Session 概览 | www.samirchen.com 本文内容主要来源于 Audio Session Programming ...

  9. Android模拟器Intel Atom下载安装配置

    https://software.intel.com 在Android x86模拟器Intel Atom x86 System Image时提示Intel execute disable bit(xd ...

  10. zookeeper可视化管理工具node-zk-browser安装

    一.安装nodejs 1. 下载 wget https://github.com/joyent/node/archive/v0.10.35.tar.gz 2. 解压 3. 安装依赖 yum -y in ...