使用Redis實現秒殺功能
<?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實現秒殺功能的更多相关文章
- ASP.NET MVC 4.0 学习2-留言板實現
新增專案實現留言板功能,瞭解MVC的運行機制 1,新增專案 2,添加數據庫文件message.mdf Ctrl+W,L 打開資料庫連接,添加存放留言的Atricle表 添加字段,後點擊&quo ...
- Neo4j中實現自定義中文全文索引
資料庫檢索效率時,一般首要優化途徑是從索引入手,然後根據需求再考慮更復雜的負載均衡.讀寫分離和分散式水平/垂直分庫/表等手段:索引通過資訊冗餘來提高檢索效率,其以空間換時間並會降低資料寫入的效率,因此 ...
- Jquery scrollTop animate 實現動態滾動到頁面頂部
這個方法之前都是用的錨點實現的,但是效果僵硬,動感不足! 之後參考了一些網站,發現都是用的js,於是自己想到用jquery 來做一個插件也來實現以下這個小功能. $.fn.backTop = func ...
- Redis服务搭建与基础功能示例
一.Redis简介 Redis是一个非关系型远程内存数据库,它也是一个Key-value模型的数据库.Redis支持5种数据类型(string.list.set.sorted set.hash),可以 ...
- 简单实现Redis缓存中的排序功能
1.在实现缓存排序功能之前,必须先明白这一功能的合理性.不妨思考一下,既然可以在数据库中排序,为什么还要把排序功能放在缓存中实现呢?这里简单总结了两个原因:首先,排序会增加数据库的负载,难以支撑高并发 ...
- linux下c++實現簡單的生產者消費者隊列模式
引言 生產者消費者是一個經典的模式 利用生產者,消費者和緩衝區降低了生產者和消費者之間的的耦合度 便於對生產者和消費者的修改 下面記錄的是一個經典的單一生產者多消費者的模式 設計思路 以隊列做為緩衝區 ...
- 【springboot】【redis】springboot+redis实现发布订阅功能,实现redis的消息队列的功能
springboot+redis实现发布订阅功能,实现redis的消息队列的功能 参考:https://www.cnblogs.com/cx987514451/p/9529611.html 思考一个问 ...
- redis(四)--简单实现Redis缓存中的排序功能
在实现缓存排序功能之前,必须先明白这一功能的合理性.不妨思考一下,既然可以在数据库中排序,为什么还要把排序功能放在缓存中实现呢?这里简单总结了两个原因:首先,排序会增加数据库的负载,难以支撑高并发的应 ...
- redis 实现发布订阅的功能
redis 除了作为缓存的功能外还可以用作消息中间件的功能,这片博客主要是介绍一下 redis 整合spring 实现消息的发布和订阅功能: 1:redis依赖,依赖两个包,redis 包, spri ...
随机推荐
- Ubuntu安装之pycharm安装
什么??公司要用Ubuntu(乌班图)?不会用??怎么进行python开发??? 乌班图操作系统下载地址:http://releases.ubuntu.com/18.04/ubuntu-18.04.1 ...
- MySQL的安装教程
一.MYSQL的安装 首先登入官网下载mysql的安装包,官网地址:https://dev.mysql.com/downloads/mysql/ 一般下载这个就好,现在的最新版本是5.8,但是据说已经 ...
- Flume使用
avro agent 配置文件 cd $FLUME_HOME/conf vim avro.conf a1.sources = r1 a1.sinks = k1 a1.channels = c1 a1. ...
- HNOI2012排队
排列组合题(本文A(n,m)表示从n个元素里选m个的排列数). 首先,老师和女生有不能相邻的限制条件,应该用插空法.而且老师人数较少且固定,把老师和男生进行混合,对女生用插空. 我先来一手错误做法,n ...
- (二)C语言之常量
- 小程序支持npm包
- 批量删除.svn文件夹、.svn文件
使用svn进行版本控制,每个文件夹下都有.svn文件夹,有些项目在脱离svn版本控制之后,想删除项目中所有的.svn文件夹,可用下面的方法进行快速删除: 1.打开要删除.svn文件的最外层文件夹, ...
- 转 Golang 入门 : 切片(slice)
https://www.jianshu.com/p/354fce23b4f0 切片(slice)是 Golang 中一种比较特殊的数据结构,这种数据结构更便于使用和管理数据集合.切片是围绕动态数组的概 ...
- mysql之备份与恢复
数据备份全备 备份命令 :mysqldump把数据库的数据以sql语句导出属于逻辑备份 格式 : mysqldump -uroot -p123456 -S 多实例的mysql.sock 数据库名 &g ...
- CSS 浮动 float 属性
浮动的框可以向左或向右移动,直到它的外边缘碰到包含框或另一个浮动框的边框为止. 由于浮动框不在文档的普通流中,所以文档的普通流中的块框表现得就像浮动框不存在一样. 请看下图,当把框 1 向右浮动时,它 ...