怎么处理时时时并发的问题

假如有500个商品放在盒子里面,低于100的和100已上的比列是4:1 要保持这个比列 每个商品的价格不一样,客户来获取的箱子里面的商品的时候要根据比列来给用户是高于100的还是低于100的,功能是实现了但是速度不行,这个过程是时时的,swoole的协程又只能cli模式,这个要怎么设计用户开1000个商品怎么实现5s内出结果我现在是30S+

路漫漫其修远兮,吾将上下而求索
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 11

又看不懂.. 100 是价格吧,开 1000 个商品 啥意思?

2年前 评论
pi_phq (楼主) 2年前
playmaker

盲盒?

2年前 评论
pi_phq (楼主) 2年前
playmaker (作者) 2年前
Junwind

大哥。你描叙问题的能力很差啊, 1000个商品可以提前生成好,作为redis中的一个hash,少一个就丢一个(或者补一个)

2年前 评论
pi_phq (楼主) 2年前
Junwind (作者) 2年前
Junwind (作者) 2年前
pi_phq (楼主) 2年前
Junwind
  1. 事先从总物品仓库中,取出200个100价格以上的商品 , 取出800个100一下的商品 ; 总数量1000, 比例 1:4 ; 加入到redis中的hash中,或者链表等;
  2. 用户消耗几个100以上的商品, 再次从总物品中取出几个100以上的; 用户消耗几个100一下的,同样取出几个100一下的; 总数量还是1000,比例还是1:4 ;
  3. 使用这个1000的hash,list数据加redis锁;避免并发问题;
2年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!