前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >面试必问的关于商品超买问题的解决方案

面试必问的关于商品超买问题的解决方案

作者头像
业余草
发布2019-04-29 18:47:23
1.3K0
发布2019-04-29 18:47:23
举报
文章被收录于专栏:业余草业余草
640?wx_fmt=png
640?wx_fmt=png
640?wx_fmt=png
640?wx_fmt=png

前两天写的文章,在群里被广泛讨论。有人提出了让我写一写如何解决商品超卖问题?

这个问题真是老生常谈,不止是秒杀,抢购中才有超卖问题,就是一个普通的商品,在并发时也有可能发生超卖。那么该如何解决呢?办法很简单。

先说我的第一个解决办法,给库存字段添加 unsigned 字段,让库存非负。

也就是说,当我执行下面的 SQL 时,我就是让你程序代码出现异常,也不让你发生超卖问题。

640?wx_fmt=png
640?wx_fmt=png

这是一种最有效,也是最笨的办法。

但是,现实是,我们的商品,至少是热门商品,一般都放在 Redis 中。如果直接操作数据库,那么 DB 的写压力会非常的大。

因此,我们这个时候,可以借助 Redis 的加锁方式解决超卖问题。

640?wx_fmt=png
640?wx_fmt=png

除此之外,我们还可以解决队列、限流等技术来一起配合使用。

640
640

不知道这个图大家还记得不。好熟悉吧,以前分享过的。上面的代码,大家可以自己试一试,使用 Jemter 压测一下。如果后面有时间,我也可以给大家直播,测试测试上面的代码是否真的解决了超卖问题。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019年04月19日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 Redis
腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档