网上有个方案是将库存先写入redis,假如x商品有10w个库存,就用redis创建个队列放10W个1进去,代表这个商品有​10W个库存,每次预定时先从队列里取个1出来,取到说明有库存,取不到说明没有库存返回下单失败。 然后取到的返回下单成功,将用户信息和商品信息放到MQ里异步去写数据库​。这个方案挺好的,超卖问题是解决了,但是这个时候如果用户去查订单详情怎么办异步写数据库假如这单还没来的及入库呢?
点赞 1

相关推荐

牛客215447971号:你说,乐观锁就是一直会重试,直到有一个线程读时候的版本和更改时候的版本一致,才算扣减优惠券成功。也可以悲观锁思想,比如分布式锁,锁的就是这块查库存和扣库存的这个逻辑,保证同时只有一个线程执行这块逻辑
点赞 评论 收藏
分享
1假设一个队列需要删除其中一个节点,应该怎么去操作它?2那你是调用这个链表它本身提供的接口吗?那它该接口的底层大概是怎么实现的?3二分查找法,如果要计算时间复杂度,应该怎么去计算?4了解快排的时间复杂度应该怎么计算?5它的这个计算的复杂度,是稳定性的吗。6假如说有一连串的计算表达式1+ 2 * (3 + 5)/ (6 + 3)。这样的计算表达式,要计算它的数学结果,这个我应该怎么去做?7要把10进制转成 16 进制,是一个什么样的思路啊?8假设三维空间中有很多个点,假如说有 10 万个点,需要求距离最近两个点的坐标,我应该怎么去做?9地铁站的这些站点信息,打算怎么去存? Java 里面用什么样的数据结构去存这个这条线路?还有这个站点?假如以地铁站为例,有 2 号线、 1 号线,然后 1 号线有什么站点? 2 号线有什么站点?10面试官提示了用链表存储。继续问:那当你存了之后,怎么去做深度优先遍历啊?11假如说功能上线之后,我的用户访问量比较大,有 20 万用户同时去访问。那这时候我的查询、计算就会比较慢,我应该怎么去做相应的优化?●来不及改程序,直接加硬件资源●加缓存,直接带来性能优化●算法层面的优化12多个进程之间的通信方式会包括有哪些?13Redis 能简单说一下读写的流程吗?14假设redis集群三主三从,那节点是怎么去做选择的?怎么知道当前这个 key 是发到 a 节点还是这个 k 发到 b 节点,是一个什么样的策略?15实习的话是希望对自己有一个什么样的期望或者目的?
点赞 评论 收藏
分享
04-26 23:08
门头沟学院 Java
字节跳动一面955人在聊 查看19道真题和解析
点赞 评论 收藏
分享
牛客网
牛客企业服务