redis使用watch完成秒杀抢购功能
来源:互联网 发布:windows.microsoft 编辑:程序博客网 时间:2024/05/18 01:22
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('127.0.0.1', 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()); //向名称为mywatchlist的hash中添加元素user_id_xxx->time() $redis->set("mywatchkey",$mywatchkey+1); $rob_result = $redis->exec(); //提交事务 if($rob_result){ $mywatchlist = $redis->hGetAll("mywatchlist"); //返回名称为mywatchlist的hash中所有的键(field)及其对应的value echo "抢购成功!<br/>"; echo "剩余数量:".($rob_total-$mywatchkey-1)."<br/>"; echo "用户列表:<pre>"; var_dump($mywatchlist); }else{ echo "手气不好,再抢购!";exit; } } ?>
0 0
- 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实现高并发下的抢购、秒杀功能
- Redis实现高并发下的抢购、秒杀功能
- 移动端布局、rem布局、手淘团队flexible.js、zoom缩放
- 深入学习Hadoop之第二篇——MapReduce
- 【Test 2016-10-2】antiprime {搜索+剪枝+高精}
- Java标识符与命名规则
- recycleView的使用
- redis使用watch完成秒杀抢购功能
- xcode新手经验
- ListView单条刷新的方法
- WEB如何入门?各种渗透攻击如何入门?
- C语言OJ项目参考(1030)求奖金总数
- 软件开发sql牵扯到日期的小提醒
- Java --UDP编程
- Androidstudio界面总是悬浮在顶层的问题解决
- poj2385Apple Catching动归