简单的redis使用watch完成秒杀抢购功能
2017-02-15 00:00
507 查看
摘要: 简单的redis使用watch完成秒杀抢购功能
Redis使用watch完成秒杀抢购功能:
使用redis中两个key完成秒杀抢购功能,mywatchkey用于存储抢购数量和mywatchlist用户存储抢购列表。
代码1:
代码2:
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' => '抢到了']); }
相关文章推荐
- redis使用watch完成秒杀抢购功能
- redis使用watch完成秒杀抢购功能
- redis使用watch完成秒杀抢购功能
- redis使用watch完成秒杀抢购功能
- redis使用watch完成秒杀抢购功能
- redis使用watch完成秒杀抢购功能
- redis使用watch完成秒杀抢购功能(转)
- REDIS实践之使用watch完成秒杀抢购功能
- Redis使用watch完成秒杀抢购功能的代码
- redis使用watch完成秒杀抢购功能
- redis使用watch完成秒杀抢购功能
- redis使用watch完成秒杀抢购功能
- redis使用watch完成秒杀抢购功能
- redis使用watch完成秒杀抢购功能
- Redis使用watch完成抢购功能(基础版)
- redis使用watch秒杀抢购思路
- redis使用watch秒杀抢购实现思路
- redis使用watch秒杀抢购思路
- redis使用watch秒杀抢购思路
- redis使用watch秒杀抢购思路