redis rua解决库存问题_库存秒杀问题-redis解决方案- 接口限流

本文介绍了使用Redis解决库存秒杀问题和接口限流的方法。通过Redis的 incr 操作实现库存的原子性扣减,防止超卖。同时,讨论了非脚本和Lua脚本实现的接口限流策略,强调了Lua脚本在减少网络开销和确保原子性方面的优势。文章还提到了Redis在分布式限流中的应用,并分享了其他如Guava的RateLimiter等限流实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/**

* Created by PhpStorm.

* redis 销量超卖秒杀解决方案

* redis 文档:http://doc.redisfans.com/

* ab -n 10000 -c 3000 http://localhost/demo.php 模拟并发

*/

$redis = new Redis();

$redis->connect('127.0.0.1',6379);

//1. 对某一个键加锁,这个键是我们自己设置,起到监视作业

$redis->watch('sales');

//获取销量,清空sales 为0

$sales = $redis->get('sales');

//总库存

$store = 4;

if($sales>=$store){

exit('已经被抢光了'); //跳转活动结束页面

}

//redis事务不会回滚, 开启事务

$redis->multi();

$redis->set('sales',$sales+1); //销量加1

$res = $redis->exec();

if($res){

//减库存

include db.php; //数据库连接

//执行sql ,减库存

}

exit;

=====================redis接口限流============================

非脚本实现

private boolean accessLimit(String ip, int limit, int time, Jedis jedis) {

boolea

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值