阅读模式:

php使用redis watch秒杀抢购

查看:1478  回复:3  类型:  来源:php自学网  标签 php redis 秒杀抢购

        redis的watch multi exec 方法实现秒杀抢购。优点:使用了乐观锁没有锁的等待,比队列方式减少了大量的内存消耗。

<?php
header("content-type:text/html;charset=utf-8");
$redis = new redis();
$result = $redis->connect('127.0.0.1', 6379);
$gots = $redis->get("gots");  // 已抢数量
$robTotal = 100;  // 抢购总数量
if ($gots < $robTotal) {
    $redis->watch("gots");  // 监听key
    $redis->multi();  // 开启事务
    //插入抢购数据  
    $redis->hSet("userList", "user_id_" . mt_rand(1, 9999), time());
    $redis->set("gots", $gots + 1);  // 抢购到+1
    $robResult = $redis->exec();  // 执行事务
    if ($robResult) {
        echo "抢购成功!<br/>";
        echo "剩余数量:" . ($robTotal - ($redis->get("gots"))) . "<br/>";
        echo "用户列表:<pre>";
        var_dump($redis->hGetAll("userList"));
    } else {
        echo "手气不好,再抢购!";
        exit;
    }
}else {
    echo "已售罄";
    exit;
}
分享到:
0 0

*有问题之处烦请在评论中指出非常感谢!
不是我想要的内容,继续搜索:

扫描二维码手机查看

最新评论:
贝如  发表于 2020-04-24 16:25:08  广东省广州市越秀区/海珠区电信
沙发
PHPLAF v.1.0.10 正式发布了!开发文档:https://blog.junphp.com/apiword.jsp 回复
少年  发表于 2020-05-29 16:53:50  广东省广州市电信
板凳
为什么用户列表是存time()的 回复
站长 2020-05-30 00:48 广东省深圳市电信
测试用的。 回复
回复:[主题]
表情:
 提交评论
清空

发布评论:


登录:
  表情:
评论话题
推荐阅读:
linux rarcrack破解rar、zip和7z压缩包简单密码的工具   阅读:20700shell脚本破解十位数内的所有纯数字rar加密压缩包脚本   阅读:11210ajax+php 实现一个简单的在线聊天室功能(附带源码)   阅读:11812ajax+php 实现一个简单的在线聊天室功能(附带源码)   阅读:11812一键分享到QQ空间、QQ好友、新浪微博、微信代码   阅读:140930面试都会问你为什么你从上一家公司离职的真实意思   阅读:13449php压缩页面的html代码一行显示   阅读:9412centos 7 安装 mysql-5.7   阅读:10050shell脚本批量删除几天前的文件   阅读:12967linux时间戳有趣的情人节秒1234567890   阅读:6973nginx编译安装后对nginx进行平滑升级   阅读:8514centos 7搭建zabbix3.4   阅读:8212小米手机端商城rem适配原理   阅读:8453shell发送邮件脚本   阅读:11371centos 7 设置 nginx-1.11.10 开机启动   阅读:9725php连接redis   阅读:7164php打印三角形   阅读:14742php中地址引用&的真正理解-变量引用、函数引用、对象引用   阅读:7605给网站添加一键qq登录的功能   阅读:9401mysql数据一键导出到csv文件   阅读:7353最简单的Banner轮播左右切换效果代码及实现思路(附带源码)   阅读:35990php打印三角形   阅读:14742shell脚本统计当前服务器并发连接数   阅读:9595php压缩页面的html代码一行显示   阅读:9412javascript点击复制内容   阅读:9215nginx安装mysql和json模块   阅读:7625php swoole搭建简单的聊天室   阅读:6886PHP 鸟哥:我也曾经是“不适合”编程的人   阅读:17637php显示刚刚、几分钟前、几小时前、几天前的函数   阅读:10666javascript对cookie操作详细代码函数   阅读:6730php 生成图片,给图片加水印   阅读:8191php 获取当前前后年、月、星期、日、时分秒的时间   阅读:8503浅谈javascript的函数节流   阅读:6172centos 7 安装 mysql-5.7   阅读:10050php压缩页面的html代码一行显示   阅读:9412爱编程,也爱健康   阅读:5858网站局部小图片优化-base64编码图片   阅读:23827crontab+shell脚本实现定时备份mysql数据库   阅读:9372php生成二维码   阅读:8666最简单的Banner轮播淡入淡出效果代码及实现思路(附带源码)   阅读:16029html5 离线缓存的使用   阅读:5586给网站添加一键qq登录的功能   阅读:9401HTTP 1.1 协议详解   阅读:17742程序员找工作三要素(必看)   阅读:7079mysql5.7开启sql日志的配置   阅读:11882mysql 为什么添加索引可以提高访问速度   阅读:7661解决 nginx 413 request entity too large   阅读:6018centos 7 安装 redis 3.2.9   阅读:8275html5 离线缓存的使用   阅读:5586HTTP 1.1 协议详解   阅读:17742