请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

关于购物车操作库存的问题

库存是一个热点访问数据,我们现在做的是一个小的电子商城

在实际业务中,分布式项目中,感觉需要保证数据的一致性和原子性

能想到的是将库存放入缓存中,用redis做分布式锁

但是因为库存会被频繁读写 

不知道有什么好的思路呢

老师能否大概说下呢 

谢谢

正在回答 回答被采纳积分+3

1回答

Geely 2017-08-31 23:18:35

hi 同学你好分布式锁是可以的~但是不能太久这个lock如果项目大的话这种方式就不适合了服务器太多锁的太频繁影响其他访问。

可以把库存信息放到cache里。通过消息队列出发异步更新cache中的库存信息。同时在下单的时候实时校验库存生成order填写页~~我们现在是这么做的在显示库存的时候是cache并不是分布式锁。

0 回复 有任何疑惑可以回复我~
  • 提问者 about_blank #1
    显示库存的cache可以理解为类似redis的缓存么,如果异步MQ的话如何保证库存的实时性呢,我猜想可能一个苹果电话只有最后一个库存,AB两人购买,异步的话有可能造成不同步,cache的使用是否类似于主从数据库,主负责写,从负责读的那种呢,当商品秒杀的情况是否又是另外一种设计呢,因为对分布式电商的场景比较感兴趣,还希望老师有时间解答下 谢谢老师了
    回复 有任何疑惑可以回复我~ 2017-08-31 23:24:02
  • Geely 回复 提问者 about_blank #2
    可以是的,redis缓存。
    实时性那就要保证这个q的消费级别是优先的。
    同时刚刚提了最重要的一点,下单之前要实时校验库存,你忘记这一步了~~
    回复 有任何疑惑可以回复我~ 2017-08-31 23:28:05
  • Geely 回复 提问者 about_blank #3
    秒杀是的,那个要严格锁库存,并保证队列和消费的顺序,那个是另外一个场景了
    回复 有任何疑惑可以回复我~ 2017-08-31 23:28:32
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信