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 相关文章推荐
对pandas读取中文unicode的csv和添加行标题的方法详解
Dec 12 Python
Python3 无重复字符的最长子串的实现
Oct 08 Python
基于python实现雪花算法过程详解
Nov 16 Python
wxPython实现分隔窗口
Nov 19 Python
python队列原理及实现方法示例
Nov 27 Python
Pytorch Tensor基本数学运算详解
Dec 30 Python
TensorFlow 输出checkpoint 中的变量名与变量值方式
Feb 11 Python
基于python 取余问题(%)详解
Jun 03 Python
关于Python字符编码与二进制不得不说的一些事
Oct 04 Python
Window10上Tensorflow的安装(CPU和GPU版本)
Dec 15 Python
教你怎么用Python生成九宫格照片
May 20 Python
python中pd.cut()与pd.qcut()的对比及示例
Jun 16 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和PHP5版本下解析XML文档的操作方法实例分析
2017/05/20 PHP
php单元测试phpunit入门实例教程
2017/11/17 PHP
AutoSave/自动存储功能实现
2007/03/24 Javascript
asp批量修改记录的代码
2008/06/25 Javascript
基于JQuery实现鼠标点击文本框显示隐藏提示文本
2012/02/23 Javascript
基于jQuery判断两个元素是否有重叠部分的代码
2012/07/25 Javascript
jquery简单实现鼠标经过导航条改变背景图
2013/12/17 Javascript
Javascript 字符串模板的简单实现
2016/02/13 Javascript
详解Node.js如何开发命令行工具
2016/08/14 Javascript
JS实现旋转木马式图片轮播效果
2017/01/18 Javascript
jQuery移除或禁用html元素点击事件常用方法小结
2017/02/10 Javascript
Angular.JS中的指令引用template与指令当做属性详解
2017/03/30 Javascript
使用Vue开发一个实时性时间转换指令
2018/01/17 Javascript
详解node.js的http模块实例演示
2018/07/12 Javascript
vue-devtools的安装和使用步骤详解
2019/10/17 Javascript
JS出现404错误原理及解决方案
2020/07/01 Javascript
基于JS实现快速读取TXT文件
2020/08/25 Javascript
Python 异常处理实例详解
2014/03/12 Python
python进阶教程之模块(module)介绍
2014/08/30 Python
在Python的Flask框架中使用日期和时间的教程
2015/04/21 Python
Python使用爬虫猜密码
2016/02/19 Python
Laravel框架表单验证格式化输出的方法
2019/09/25 Python
爬虫代理池Python3WebSpider源代码测试过程解析
2019/12/20 Python
Python实现井字棋小游戏
2020/03/09 Python
Keras 切换后端方式(Theano和TensorFlow)
2020/06/19 Python
Python创建简单的神经网络实例讲解
2021/01/04 Python
python re模块常见用法例举
2021/03/01 Python
使用CSS3和Checkbox实现JQuery的一些效果
2015/08/03 HTML / CSS
俄罗斯在线手表和珠宝商店:AllTime
2019/09/28 全球购物
美国用餐电影院:Alamo Drafthouse Cinema
2020/01/23 全球购物
绿色环保口号
2014/06/12 职场文书
幼儿园安全生产月活动总结
2014/07/05 职场文书
干部个人考察材料
2014/12/24 职场文书
毕业答辩开场白范文
2015/05/27 职场文书
Python list去重且保持原顺序不变的方法
2021/04/03 Python
golang 语言中错误处理机制
2021/08/30 Golang