<?php
$id = 1;
$pdo=new PDO("mysql:host=127.0.0.1;dbname=test","root","root");
$pdo->exec("UPDATE `ms_goods` SET `nums`=`nums`-1 WHERE id=$id ");
echo "miao sha success";
// 队列 链表 list :array
// array:先进后出
// list: 先进先出
?>
 <?php
// 库存复数 : 并发量足够大
$r=new Redis(); $r->connect("127.0.0.1",6379); $res=$r->rpop("mslist"); //right 右:出队 ---> if(!$res){
echo "out of print";
}else{
$id = 1;
$pdo=new PDO("mysql:host=127.0.0.1;dbname=test","root","root");
$pdo->exec("UPDATE `ms_goods` SET `nums`=`nums`-1 WHERE id=$id ");
echo "miao sha success";
} // 队列 链表 list :array
// array:先进后出
// list: 先进先出
?>
 <?php
$id = 1; // 活动id
$pdo=new PDO("mysql:host=127.0.0.1;dbname=test","root","root");
$num = $pdo->query("SELECT * FROM `ms_goods` WHERE id = $id ")->fetch();
$nums = $num['nums']; //库存 // 库存复数 : 并发量足够大
$r=new Redis(); $r->connect("127.0.0.1",6379); for($i=1;$i<=$nums;$i++){
$r->lpush("mslist","$i"); //left 左:入队 ---->
} echo "[nums:{$nums}] list: miaosha start ...";
?>
 <?php
$id = 1;
$pdo=new PDO("mysql:host=127.0.0.1;dbname=test","root","root");
$res=$pdo->query("SELECT * FROM `ms_goods` where id = $id")->fetch(PDO::FETCH_ASSOC);
?> <!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>秒杀功能</title>
</head>
<body> <center>
<h1>抢购活动,热卖,促销</h1>
<div style="width:320px;height:160px;border:1px solid #ccc;">
<img src="tel_5.jpg" />
</div>
<p>库存:<?php echo $res['nums']; ?></p>
<button id="msbtn">秒杀</button>
</center> </body>
</html> <script type="text/javascript">
document.getElementById('msbtn').onclick=function(){
window.location.href = 'doms.php';
}
</script>

使用Redis實現秒殺功能的更多相关文章

  1. ASP.NET MVC 4.0 学习2-留言板實現

    新增專案實現留言板功能,瞭解MVC的運行機制 1,新增專案   2,添加數據庫文件message.mdf   Ctrl+W,L 打開資料庫連接,添加存放留言的Atricle表 添加字段,後點擊&quo ...

  2. Neo4j中實現自定義中文全文索引

    資料庫檢索效率時,一般首要優化途徑是從索引入手,然後根據需求再考慮更復雜的負載均衡.讀寫分離和分散式水平/垂直分庫/表等手段:索引通過資訊冗餘來提高檢索效率,其以空間換時間並會降低資料寫入的效率,因此 ...

  3. Jquery scrollTop animate 實現動態滾動到頁面頂部

    這個方法之前都是用的錨點實現的,但是效果僵硬,動感不足! 之後參考了一些網站,發現都是用的js,於是自己想到用jquery 來做一個插件也來實現以下這個小功能. $.fn.backTop = func ...

  4. Redis服务搭建与基础功能示例

    一.Redis简介 Redis是一个非关系型远程内存数据库,它也是一个Key-value模型的数据库.Redis支持5种数据类型(string.list.set.sorted set.hash),可以 ...

  5. 简单实现Redis缓存中的排序功能

    1.在实现缓存排序功能之前,必须先明白这一功能的合理性.不妨思考一下,既然可以在数据库中排序,为什么还要把排序功能放在缓存中实现呢?这里简单总结了两个原因:首先,排序会增加数据库的负载,难以支撑高并发 ...

  6. linux下c++實現簡單的生產者消費者隊列模式

    引言 生產者消費者是一個經典的模式 利用生產者,消費者和緩衝區降低了生產者和消費者之間的的耦合度 便於對生產者和消費者的修改 下面記錄的是一個經典的單一生產者多消費者的模式 設計思路 以隊列做為緩衝區 ...

  7. 【springboot】【redis】springboot+redis实现发布订阅功能,实现redis的消息队列的功能

    springboot+redis实现发布订阅功能,实现redis的消息队列的功能 参考:https://www.cnblogs.com/cx987514451/p/9529611.html 思考一个问 ...

  8. redis(四)--简单实现Redis缓存中的排序功能

    在实现缓存排序功能之前,必须先明白这一功能的合理性.不妨思考一下,既然可以在数据库中排序,为什么还要把排序功能放在缓存中实现呢?这里简单总结了两个原因:首先,排序会增加数据库的负载,难以支撑高并发的应 ...

  9. redis 实现发布订阅的功能

    redis 除了作为缓存的功能外还可以用作消息中间件的功能,这片博客主要是介绍一下 redis 整合spring 实现消息的发布和订阅功能: 1:redis依赖,依赖两个包,redis 包, spri ...

随机推荐

  1. AcWing:143. 最大异或对(01字典树 + 位运算 + 异或性质)

    在给定的N个整数A1,A2……ANA1,A2……AN中选出两个进行xor(异或)运算,得到的结果最大是多少? 输入格式 第一行输入一个整数N. 第二行输入N个整数A1A1-ANAN. 输出格式 输出一 ...

  2. Latex中 summation前后距离的设置

    use \hspace ,eg., \hspace{-.1cm} before and after summation to stop violation of margin. 比如下面一段公式代码 ...

  3. Latex里面的\newtheorem*{xx}{yy}后面的*是干什么的?

    答案: 加了*表示不标号.例如: 同样使用命令: \begin{prb} xx\end{prb} 1. \newtheorem{prb}{Problem Formulation} → Problem ...

  4. JavaWeb-SpringSecurity实现需求-判断请求是否以html结尾

    系列博文 项目已上传至guthub 传送门 JavaWeb-SpringSecurity初认识 传送门 JavaWeb-SpringSecurity在数据库中查询登陆用户 传送门 JavaWeb-Sp ...

  5. RESTful API是什么?

    1. REST 是Repersentational State Transfer的缩写 翻译为"表述性状态传递",那么什么是表述性状态传递呢?为了理解这个词语,我们从"R ...

  6. react 的定义组件(了解)

    react 中定义组件的方法 1. 定义组件 React.createClass() (被淘汰了) 定义组件中的函数 methods 的中的 this 统统指向 组件 2. 函数定义组件 定义的组件时 ...

  7. python正则表达式解析(re)

    正则表达式的使用方法主要有4种: re.search(进行正则匹配), re.match(从头开始匹配)  re.findall(找出所有符合条件的字符列表)  re.split(根据条件进行切分)  ...

  8. [Ajax三级联动 无刷新]

    三级联动 的效果图 html页面: <body> <label class="fl">区域:</label> <select class= ...

  9. Spring Bean学习创建及使用<一>

    转自:http://glzaction.iteye.com/blog/1299441 Spring中依赖注入有三种注入方式: 一.构造器注入: 二.设值注入(setter方式注入): 三.Feild方 ...

  10. JS原生上传大文件显示进度条-php上传文件

    JS原生上传大文件显示进度条-php上传文件 在php.ini修改需要的大小: upload_max_filesize = 8M    post_max_size = 10M    memory_li ...