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 MD5文件生成码
Jan 12 Python
Python映射拆分操作符用法实例
May 19 Python
Python实现替换文件中指定内容的方法
Mar 19 Python
django项目搭建与Session使用详解
Oct 10 Python
python3的输入方式及多组输入方法
Oct 17 Python
详解Python:面向对象编程
Apr 10 Python
Python包,__init__.py功能与用法分析
Jan 07 Python
Pycharm 安装 idea VIM插件的图文教程详解
Feb 21 Python
Python利用FFT进行简单滤波的实现
Feb 26 Python
解决python ThreadPoolExecutor 线程池中的异常捕获问题
Apr 08 Python
sklearn和keras的数据切分与交叉验证的实例详解
Jun 19 Python
python实现简单贪吃蛇游戏
Sep 29 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
JAVA/JSP学习系列之四
2006/10/09 PHP
PHP脚本的10个技巧(1)
2006/10/09 PHP
php include的妙用,实现路径加密
2008/07/29 PHP
php 操作调试的方法
2012/07/12 PHP
叫你如何修改Nginx与PHP的文件上传大小限制
2014/09/10 PHP
php中getservbyport与getservbyname函数用法实例
2014/11/18 PHP
php实现记事本案例
2020/10/20 PHP
javascript获取当前ip的代码
2009/05/10 Javascript
javascript与asp.net(c#)互相调用方法
2009/12/13 Javascript
js 小贴士一星期合集
2010/04/07 Javascript
JAVASCRIPT车架号识别/验证函数代码 汽车车架号验证程序
2012/01/08 Javascript
Extjs4 类的定义和扩展实例
2013/06/28 Javascript
jQuery超酷平面式时钟效果代码分享
2020/03/30 Javascript
JavaScript学习小结(一)——JavaScript入门基础
2015/09/02 Javascript
JavaScript使ifram跨域相互访问及与PHP通信的实例
2016/03/03 Javascript
IE8 内存泄露(内存一直增长 )的原因及解决办法
2016/04/06 Javascript
Jquery AJAX POST与GET之间的区别详细介绍
2016/10/17 Javascript
探讨Vue.js的组件和模板
2017/10/27 Javascript
vue安装和使用scss及sass与scss的区别详解
2018/10/15 Javascript
从0到1搭建element后台框架优化篇(打包优化)
2019/05/12 Javascript
python33 urllib2使用方法细节讲解
2013/12/03 Python
全面了解Python的getattr(),setattr(),delattr(),hasattr()
2016/06/14 Python
Python 利用scrapy爬虫通过短短50行代码下载整站短视频
2018/10/29 Python
python3实现表白神器
2019/04/09 Python
python FTP批量下载/删除/上传实例
2019/12/22 Python
Django 解决上传文件时,request.FILES为空的问题
2020/05/20 Python
使用分层画布来优化HTML5渲染的教程
2015/05/08 HTML / CSS
铭宣海淘转运:美国、日本、英国转运等全球转运公司
2019/09/10 全球购物
电子商务专业毕业生求职信
2014/06/12 职场文书
十佳好少年事迹材料
2014/08/21 职场文书
个人查摆剖析材料
2014/10/04 职场文书
六年级学生评语大全
2014/12/26 职场文书
2016大一新生军训感言
2015/12/08 职场文书
2019事业单位个人工作总结范文
2019/08/26 职场文书
一文搞懂如何实现Go 超时控制
2021/03/30 Python
中国古风插画师排行榜:夏达第一,第三是阴阳师姑获鸟皮肤创作者
2022/03/18 国漫