文档章节

简单的redis使用watch完成秒杀抢购功能

 清天君
发布于 2017/02/15 15:28
字数 239
阅读 259
收藏 3

Redis使用watch完成秒杀抢购功能: 使用redis中两个key完成秒杀抢购功能,mywatchkey用于存储抢购数量和mywatchlist用户存储抢购列表。

代码1:

<?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);  exit;  
    }else{  
        echo "手气不好,再抢购!";exit;  
    }  
}  
?>  

代码2:

<?php
$redis = Redis::getClient();
$key = 'miaosha_key';
$key_r = $redis->decr($key); //最关键
if ($key_r < 0) {

	echo json_encode(['code' => 0, 'msg' => '已经被抢光']);
} else {
	//抢到了
	//队列或者直接保存数据库
	echo json_encode(['code' => 1, 'msg' => '抢到了']);
}

© 著作权归作者所有

共有 人打赏支持
粉丝 0
博文 23
码字总数 5322
作品 0
成都
私信 提问
redis使用watch完成秒杀抢购功能

redis使用watch完成秒杀抢购功能: 使用redis中两个key完成秒杀抢购功能,mywatchkey用于存储抢购数量和mywatchlist用户存储抢购列表。 它的优点如下: 1. 首先选用内存数据库来抢购速度极快...

凯文加内特
2015/11/26
989
0
redis_简单秒杀_watch事务

简单秒杀 <?php header("content-type:text/html;charset=utf-8"); $redis = new redis(); $result = $redis->connect('127.0.0.1', 6379); $watchkey = $redis->get("watchkey"); $robtotal......

喵王不瞌睡
2016/03/31
85
0
分别开启15和20个线程模拟秒杀,操作redis事务,商品居然卖不完。。

用 ExecutorService executor = Executors.newFixedThreadPool(15);创建线程池,分别模拟1000个用户去抢100个商品,线程池超过15个之后,商品居然秒杀不完?两个类 测试启动类如下 开启20个线...

S三少S
08/31
0
0
秒杀系统常见问题1

由于最近的面试老是遇到面试官问设计一个秒杀系统,当时也只是粗略的看了看,然后今天去陌陌面试又被问到了,被教育了一顿,然后晚上的笔试又让设计一个秒杀系统,我真是XXXXK,所以搜罗一波...

努力的C
2017/10/17
0
0
如何设计一个秒杀程序及避免超卖问题

很多的电商平台,在节假日如双十一,618等都会有商品描述的活动,今天和大家讨论一下,如何设计一个秒杀系统。 什么是秒杀 在一定的时间内几秒或者几分钟,对一定数量的库存进行出卖。 场景分...

时之令
06/08
0
0

没有更多内容

加载失败,请刷新页面

加载更多

day152-2018-11-19-英语流利阅读-待学习

外媒看吴亦凡刷榜事件 Lala 2018-11-19 1.今日导读 近日,吴亦凡的专辑在国外陷入了刷榜风波,他的新专辑霸占了单曲榜前三名,并且前十名他占据了七席,力压美国乐坛巨星 Lady Gaga 和 A 妹,...

飞鱼说编程
21分钟前
2
0
开源 java CMS - FreeCMS2.8 微信管理 群发图文消息

项目地址:http://www.freeteam.cn/ 群发图文消息 管理员可以在这里群发图文消息 此列表只提取已审核并且带信息图片的数据! 选择需要群发的消息,点击“群发图文消息”按钮。 微信的限定: ...

freeteam
30分钟前
0
0
Beautiful Soup

定义 Python中的一个库,主要用于从网页爬取数据; 安装 pip install beautifulsoup4 四大对象 Beautiful Soup将复杂的HTML文档转换成树形结构,树中的每个节点都是Python对象,对象可归纳为...

村雨1943
41分钟前
3
0
Visual Studio 昨日发布新版本:增加实时同步编程、共同调试

多名开发者可以在同一个项目中编程,在编写代码和调试代码时只需发送一个 URL 网址,就能邀请他人参与协作,而且无需重新配置开发环境和安装任何附加包。该服务支持 Windows、Mac 与 Linux ...

linuxCool
43分钟前
4
0
发现一种不错的学习方法

这是在《软技能,代码之外的生存之道》所看到的一种学习方法,感觉这个理念不错,分享出来,共勉。 我的「十步学习法」 多年以来,我都承受着巨大的压力:快速学习新技术、新编程语言、新框架...

firepation
43分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部