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 相关文章推荐
利用Python脚本在Nginx和uwsgi上部署MoinMoin的教程
May 05 Python
python数字图像处理之高级形态学处理
Apr 27 Python
python进行两个表格对比的方法
Jun 27 Python
python将一个英文语句以单词为单位逆序排放的方法
Dec 20 Python
python读取有密码的zip压缩文件实例
Feb 08 Python
对Python Pexpect 模块的使用说明详解
Feb 14 Python
详解Python下载图片并保存本地的两种方式
May 15 Python
Django基础知识 URL路由系统详解
Jul 18 Python
Python二元算术运算常用方法解析
Sep 15 Python
如何用python插入独创性声明
Mar 31 Python
python解决12306登录验证码的实现
Apr 18 Python
pytorch DataLoader的num_workers参数与设置大小详解
May 28 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
PHP isset()与empty()的使用区别详解
2010/08/29 PHP
详解PHP对象的串行化与反串行化
2016/01/24 PHP
PHP判断是否是微信打开还是浏览器打开的方法
2019/02/27 PHP
javascript Zifa FormValid 0.1表单验证 代码打包下载
2007/06/08 Javascript
打造基于jQuery的高性能TreeView(asp.net)
2011/02/23 Javascript
仿猪八戒网左下角的文字滚动效果
2011/10/28 Javascript
JavaScript 布尔操作符解析  &amp;&amp; || !
2012/08/10 Javascript
new Date()问题在ie8下面的处理方法
2014/07/31 Javascript
node.js中的http.response.setHeader方法使用说明
2014/12/14 Javascript
js模拟淘宝网的多级选择菜单实现方法
2015/08/18 Javascript
JavaScript预解析及相关技巧分析
2016/04/21 Javascript
js实现html table 行,列锁定的简单实例
2016/10/13 Javascript
JavaScript之浏览器对象_动力节点Java学院整理
2017/07/03 Javascript
Vue中的数据监听和数据交互案例解析
2017/07/12 Javascript
带你快速理解javascript中的事件模型
2017/08/14 Javascript
JavaScript实现浅拷贝与深拷贝的方法分析
2018/07/05 Javascript
原生JS与JQ获取元素的区别详解
2020/02/13 Javascript
VueJS实现用户管理系统
2020/05/29 Javascript
Python基于DES算法加密解密实例
2015/06/03 Python
Python 包含汉字的文件读写之每行末尾加上特定字符
2016/12/12 Python
python时间日期函数与利用pandas进行时间序列处理详解
2018/03/13 Python
python如何派生内置不可变类型并修改实例化行为
2018/03/21 Python
Python实现的求解最小公倍数算法示例
2018/05/03 Python
一篇文章彻底搞懂Python中可迭代(Iterable)、迭代器(Iterator)与生成器(Generator)的概念
2019/05/13 Python
Django框架使用内置方法实现登录功能详解
2019/06/12 Python
Python使用线程来接收串口数据的示例
2019/07/02 Python
pycharm 实现本地写代码,服务器运行的操作
2020/06/08 Python
python实现学生成绩测评系统
2020/06/22 Python
python爬虫筛选工作实例讲解
2020/11/23 Python
软件测试英文面试题
2012/10/14 面试题
2014村务公开实施方案
2014/02/25 职场文书
大家访活动实施方案
2014/03/10 职场文书
护士自我推荐信范文
2015/03/24 职场文书
家长会感言
2015/08/01 职场文书
小学四年级作文之人物作文
2019/11/06 职场文书
python基于tkinter实现gif录屏功能
2021/05/19 Python