1.每个订单都都可以先查询到多少钱,注:下单的时候不能查询。(目前考虑的是查询时放缓存里,但是这个单被查了不一定会被下单,而且缓存的时间不好定)
2.扣钱是在这个单子被接单的时候扣的
3.如果多线程或者循环过来一堆订单,怎么保证账户余额大于0?余额存在DB,关于余额的操作已经通过reids保证余额更新是安全的。
题目如上,欢迎各位赐教!
1.每个订单都都可以先查询到多少钱,注:下单的时候不能查询。(目前考虑的是查询时放缓存里,但是这个单被查了不一定会被下单,而且缓存的时间不好定)
2.扣钱是在这个单子被接单的时候扣的
3.如果多线程或者循环过来一堆订单,怎么保证账户余额大于0?余额存在DB,关于余额的操作已经通过reids保证余额更新是安全的。
题目如上,欢迎各位赐教!
4 回答968 阅读
4 回答869 阅读
1 回答1.5k 阅读
1 回答777 阅读
584 阅读
486 阅读
抛砖引玉:
多线程 扣钱 要保证安全,在扣钱的时刻一定要顺序,保证原子性;
想到两种,1 是 使用redis存余额,redis操作本身是原子的; 2 是 使用数据库乐观锁,数据加版本号,更新数据检验版本号。