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实现单词拼写检查
Apr 25 Python
windows10系统中安装python3.x+scrapy教程
Nov 08 Python
用python实现刷点击率的示例代码
Feb 21 Python
使用Python-OpenCV向图片添加噪声的实现(高斯噪声、椒盐噪声)
May 28 Python
简单了解python的内存管理机制
Jul 08 Python
Python 保持登录状态进行接口测试的方法示例
Aug 06 Python
使用python matploblib库绘制准确率,损失率折线图
Jun 16 Python
PyCharm中关于安装第三方包的三个建议
Sep 17 Python
python 中关于pycharm选择运行环境的问题
Oct 31 Python
python 基于opencv操作摄像头
Dec 24 Python
Python趣味挑战之实现简易版音乐播放器
May 28 Python
高考要来啦!用Python爬取历年高考数据并分析
Jun 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
php的declare控制符和ticks教程(附示例)
2014/03/21 PHP
php获取系统变量方法小结
2015/05/29 PHP
PHP共享内存用法实例分析
2016/02/12 PHP
PHP 二维数组和三维数组的过滤
2016/03/16 PHP
php表单文件iframe异步上传实例讲解
2017/07/26 PHP
PHP封装的mysqli数据库操作类示例
2019/02/16 PHP
PHP封装的分页类与简单用法示例
2019/02/25 PHP
滚动经典最新话题[prototype框架]下编写
2006/10/03 Javascript
Javascript实例教程(19) 使用HoTMetal(5)
2006/12/23 Javascript
写js时遇到的一些小问题
2010/12/06 Javascript
jquery 循环显示div的示例代码
2013/10/18 Javascript
jQuery实现可以编辑的表格实例详解【附demo源码下载】
2016/07/09 Javascript
angular和BootStrap3实现购物车功能
2017/01/25 Javascript
JavaScript时间日期操作实例小结【5个示例】
2018/12/22 Javascript
详解Vue 项目中的几个实用组件(ts)
2019/10/29 Javascript
python 域名分析工具实现代码
2009/07/15 Python
Python多线程和队列操作实例
2015/06/21 Python
Python多线程、异步+多进程爬虫实现代码
2016/02/17 Python
Python+Opencv识别两张相似图片
2020/03/23 Python
Python实现k-means算法
2018/02/23 Python
对python:print打印时加u的含义详解
2018/12/15 Python
python实现简单日期工具类
2019/04/24 Python
DataFrame.groupby()所见的各种用法详解
2020/06/14 Python
浅谈python出错时traceback的解读
2020/07/15 Python
Pycharm Git 设置方法
2020/09/15 Python
HTML中meta标签及Keywords
2020/04/15 HTML / CSS
越南综合购物网站:Lazada越南
2019/06/10 全球购物
设备管理实施方案
2014/05/31 职场文书
社区党员公开承诺书
2014/08/30 职场文书
先进事迹演讲稿
2014/09/01 职场文书
私人房屋买卖协议书
2014/10/04 职场文书
2015年法制宣传月活动总结
2015/03/26 职场文书
2015年信访工作总结
2015/04/07 职场文书
python关于集合的知识案例详解
2021/05/30 Python
Django中session进行权限管理的使用
2021/07/09 Python
vue特效之翻牌动画
2022/04/20 Vue.js