Redis使用watch完成秒杀抢购功能的代码


Posted in Python onMay 07, 2018

redis使用watch完成秒杀抢购功能:

使用redis中两个key完成秒杀抢购功能,mywatchkey用于存储抢购数量和mywatchlist用户存储抢购列表。

它的优点如下:

1. 首先选用内存数据库来抢购速度极快。

2. 速度快并发自然没不是问题。

3. 使用悲观锁,会迅速增加系统资源。

4. 比队列强的多,队列会使你的内存数据库资源瞬间爆棚。

5. 使用乐观锁,达到综合需求。

我觉得以下代码肯定是你想要的。

<?php 
header("content-type:text/html;charset=utf-8"); 
$redis = new redis(); 
$result = $redis->connect('10.10.10.119', 6379); 
$mywatchkey = $redis->get("mywatchkey"); 
$rob_total = 100;  //抢购数量 
if($mywatchkey<$rob_total){ 
  $redis->watch("mywatchkey"); 
  $redis->multi(); 
  //设置延迟,方便测试效果。 
  sleep(5); 
  //插入抢购数据 
  $redis->hSet("mywatchlist","user_id_".mt_rand(1, 9999),time()); 
  $redis->set("mywatchkey",$mywatchkey+1); 
  $rob_result = $redis->exec(); 
  if($rob_result){ 
    $mywatchlist = $redis->hGetAll("mywatchlist"); 
    echo "抢购成功!<br/>"; 
    echo "剩余数量:".($rob_total-$mywatchkey-1)."<br/>"; 
    echo "用户列表:<pre>"; 
    var_dump($mywatchlist); 
  }else{ 
    echo "手气不好,再抢购!";exit; 
  } 
} 
?>

以上所述是小编给大家介绍的redis使用watch完成秒杀抢购功能的实例代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Python 相关文章推荐
探索Python3.4中新引入的asyncio模块
Apr 08 Python
Python常用内置模块之xml模块(详解)
May 23 Python
python之Character string(实例讲解)
Sep 25 Python
python利用高阶函数实现剪枝函数
Mar 20 Python
Python中new方法的详解
Jan 15 Python
在python中实现调用可执行文件.exe的3种方法
Jul 07 Python
python实现列表中最大最小值输出的示例
Jul 09 Python
django 通过url实现简单的权限控制的例子
Aug 16 Python
下载官网python并安装的步骤详解
Oct 12 Python
Python any()函数的使用方法
Oct 28 Python
基于python tkinter的点名小程序功能的实例代码
Aug 22 Python
Python实现简单猜数字游戏
Feb 03 Python
Python文本统计功能之西游记用字统计操作示例
May 07 #Python
Python中的函数作用域
May 07 #Python
Php多进程实现代码
May 07 #Python
Python格式化输出%s和%d
May 07 #Python
python获取代理IP的实例分享
May 07 #Python
对python使用http、https代理的实例讲解
May 07 #Python
python3 requests中使用ip代理池随机生成ip的实例
May 07 #Python
You might like
COM in PHP (winows only)
2006/10/09 PHP
php Ajax乱码
2008/04/09 PHP
微信支付的开发流程详解
2016/09/13 PHP
详解Yii2 定制表单输入字段的标签和样式
2017/01/04 PHP
HTTP状态代码以及定义(解释)
2007/02/02 Javascript
不一样的文字闪烁 轮番闪烁
2009/11/11 Javascript
基于jquery 的一个progressbar widge
2010/10/29 Javascript
基于jquery的文本框与autocomplete结合使用(asp.net+json)
2012/05/30 Javascript
浅谈javascript的原型继承
2012/07/25 Javascript
Flex通过JS获取客户端IP和计算机名的实例代码
2013/11/21 Javascript
js实现根据身份证号自动生成出生日期
2015/12/15 Javascript
详解Vue生命周期的示例
2017/03/10 Javascript
JS原型继承四步曲及原型继承图一览
2017/11/28 Javascript
在 Vue 项目中引入 tinymce 富文本编辑器的完整代码
2018/05/04 Javascript
js实现一个页面多个倒计时的3种方法
2019/02/25 Javascript
VUE安装使用教程详解
2019/06/03 Javascript
layui动态绑定事件的方法
2019/09/20 Javascript
基于jQuery实现挂号平台首页源码
2020/01/06 jQuery
Django集成百度富文本编辑器uEditor攻略
2014/07/04 Python
python 示例分享---逻辑推理编程解决八皇后
2014/07/20 Python
python获取当前运行函数名称的方法实例代码
2017/04/06 Python
Python之ReportLab绘制条形码和二维码的实例
2018/01/15 Python
python最小生成树kruskal与prim算法详解
2019/01/17 Python
详解利用Python scipy.signal.filtfilt() 实现信号滤波
2019/06/05 Python
对django中foreignkey的简单使用详解
2019/07/28 Python
django haystack实现全文检索的示例代码
2020/06/24 Python
python爬虫请求头的使用
2020/12/01 Python
联想墨西哥官方网站:Lenovo墨西哥
2016/08/17 全球购物
美国Curacao百货连锁店网站:iCuracao.com
2019/07/20 全球购物
垃圾回收的优点和原理。并考虑2种回收机制
2016/10/16 面试题
应届生简历中的自我评价
2014/01/13 职场文书
单位提档介绍信
2014/01/17 职场文书
大学活动总结模板
2014/07/10 职场文书
市场营销专业毕业生求职信
2014/07/21 职场文书
家庭困难证明
2014/10/12 职场文书
2015年网络管理员工作总结
2015/05/21 职场文书