Redis秒杀事务高并发所产生的问题及解决方案

秒杀业务在高并发场景下常遇到超卖和连接超时问题。为解决超卖,可以采用乐观锁通过watch和事务确保库存更新的准确性,但可能遗留库存问题。另一种方案是利用LUA脚本,其原子性可避免超卖,通过单线程处理实现任务队列,保证并发安全性。针对连接超时,使用数据库连接池如pool2能有效管理连接,防止等待超时。
摘要由CSDN通过智能技术生成

秒杀业务高并发产生的问题

问题一:超卖问题

解决方式一:采用乐观锁

采用乐观锁, watch 监视库存, 同时将秒杀操作采用事务管理,解决超卖问题,不过会存在库存遗留问题
缺点: 采用乐观锁方式会存在库存遗留问题

解决方式二: 采用LUA脚本

1.1 LUA脚本介绍

LUA脚本是类似redis事务,有一定的原子性,不会被其他命令插队,可以完成redis事务性的操作,redis2.6以上版本可以使用,利用lua脚本淘汰用户,解决超卖问题,

1.2 特点

通过lua脚本解决争抢问题,实际上是redis利用其单线程的特性,用任务队列的方式解决多任务并发问题

问题二:由于有些连接等待时间过长会出现连接超时的问题

解决方案

通过pool2数据库连接池管理连接,解决连接等待超时的问题

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值