$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. django模型:字段和选项

    https://blog.csdn.net/iloveyin/article/details/44852645一.常用字段1.字段类型使用时需要引入django.db.models包,字段类型如下Au ...

  2. vs中nodejs代码 resharper 提示 ECMAScript2015 Feature. your Current language level is ECMAScript5的解决办法

    问题如图 错误信息:ECMAScript 2015 Feature. your Current language level is: ECMAScript5 解决方法, 打开 Resharper -& ...

  3. mongoDb,下载及启动

     mongoDb下载 https://www.mongodb.com/download-center 可视化工具Robomongo下载 https://robomongo.org/download m ...

  4. Hbase架构和读写流程

    转载自:http://www.cnblogs.com/muzili-ykt/p/muzili_ykt.html 在HBase读写时,相同Cell(RowKey/ColumnFamily/Column相 ...

  5. kubernetes清除状态为Evicted的pod

    kubectl get pods | grep Evicted | awk '{print $1}' | xargs kubectl delete pod 清除脚本 #!/bin/bash for p ...

  6. 生信-序列比较dp[未完成]

    来自:生物信息学-陈铭第二版的一个例题. 题目: 目前的代码,运行不正确,关键就是不知道怎么回溯啊,回溯怎么标记呢? #include <iostream> #include<vec ...

  7. yii2美化url

    http://blog.csdn.net/xundh/article/details/45418265

  8. 2017 Multi-University Training Contest - Team 3 Kanade's sum hd6058

    地址:http://acm.split.hdu.edu.cn/showproblem.php?pid=6058 题目: Kanade's sum Time Limit: 4000/2000 MS (J ...

  9. Linux下编程学习一

    本篇主要记录一些在学习LINUX下编程时,, C和C++语言的一些基础的常识, 一. 函数指针 void MyFun(int x); 函数声明 void (*FunP)(int ); 函数指针声明 下 ...

  10. java红黑树

    从这里学了一些知识点https://blog.csdn.net/sun_tttt/article/details/65445754,感谢作者