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装饰器使用实例:验证参数合法性
Jun 24 Python
python pycurl验证basic和digest认证的方法
May 02 Python
python-docx修改已存在的Word文档的表格的字体格式方法
May 08 Python
python的concat等多种用法详解
Nov 28 Python
解决python3 pika之连接断开的问题
Dec 18 Python
python读取txt文件中特定位置字符的方法
Dec 24 Python
Python2.7版os.path.isdir中文路径返回false的解决方法
Jun 21 Python
Python openpyxl模块原理及用法解析
Jan 19 Python
Python爬虫库BeautifulSoup获取对象(标签)名,属性,内容,注释
Jan 25 Python
用Python制作mini翻译器的实现示例
Aug 17 Python
python 基于UDP协议套接字通信的实现
Jan 22 Python
Django url 路由匹配过程详解
Jan 22 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
php4的彩蛋
2006/10/09 PHP
真正根据utf8编码的规律来进行截取字符串的函数(utf8版sub_str )
2012/10/24 PHP
php对二维数组按指定键值key排序示例代码
2013/11/26 PHP
php遍历目录输出目录及其下的所有文件示例
2014/01/27 PHP
php+js实现异步图片上传实例分享
2014/06/02 PHP
PHP+FFMPEG实现将视频自动转码成H264标准Mp4文件
2014/09/24 PHP
ExtJs3.0中Store添加 baseParams 的Bug
2010/03/10 Javascript
jQuery 获取浏览器所在的IP地址的小例子
2013/11/08 Javascript
jQuery 事件的命名空间简单了解
2013/11/22 Javascript
javascript闭包入门示例
2014/04/30 Javascript
javaScript的函数对象的声明详解
2015/02/06 Javascript
JavaScript类型系统之基本数据类型与包装类型
2016/01/06 Javascript
jQuery实时显示鼠标指针位置和键盘ASCII码
2016/03/28 Javascript
JS实现pasteHTML兼容ie,firefox,chrome的方法
2016/06/22 Javascript
浅谈html转义及防止javascript注入攻击的方法
2016/12/04 Javascript
详解Vue.js——60分钟组件快速入门(上篇)
2016/12/05 Javascript
基于Javascript实现的不重复ID的生成器
2016/12/25 Javascript
AngularJS实现的输入框字数限制提醒功能示例
2017/10/26 Javascript
vue项目引入字体.ttf的方法
2018/09/28 Javascript
angularJs中ng-model-options设置数据同步的方法
2018/09/30 Javascript
layui表格 列自动适应大小失效的解决方法
2019/09/06 Javascript
WEB前端性能优化的7大手段详解
2020/02/04 Javascript
javascript实现前端成语点击验证
2020/06/24 Javascript
谈谈JavaScript令人迷惑的==与+
2020/08/31 Javascript
Python实现Const详解
2015/01/27 Python
浅谈Scrapy框架普通反爬虫机制的应对策略
2017/12/28 Python
Python单元测试与测试用例简析
2019/11/09 Python
python实现银行实战系统
2020/02/26 Python
记一次pyinstaller打包pygame项目为exe的过程(带图片)
2020/03/02 Python
PyQt5事件处理之定时在控件上显示信息的代码
2020/03/25 Python
使用sklearn对多分类的每个类别进行指标评价操作
2020/06/11 Python
阿玛尼意大利官网:Armani意大利
2018/10/30 全球购物
Laura官网:加拿大女性的顶级时尚目的地
2019/09/20 全球购物
全球性的众包图形设计市场:DesignCrowd
2021/02/02 全球购物
单位授权委托书范文
2014/08/02 职场文书
python微信智能AI机器人实现多种支付方式
2022/04/12 Python