现在是把用户每次消费记录存入 zset 里边,然后积累用户的消费金额,然后过一段时间扣费。然后记录该时间段总的消费金额。
在存入 zset 的同时,都会把用户每次消费记录写入到流水表中。
现在做统计功能,总的消费金额那张表缺失相关字段,我必须查插流水表,这时候金额会有误差。
有什么比较好的解决方案吗?
1
xcstream 2020-03-19 13:50:28 +08:00
可能原因 1 数据丢失 2 浮点数
|
2
awanganddong OP 现在这种方案,是每过一段时间直接统计用户总消费,然后写库。
还有一种方案就是,我直接把每一条订单的详细信息,放入队列中,然后消费。这样就能保证流水表和金额总表一致性。就是操作数据库会非常频繁。 |
3
rrfeng 2020-03-19 13:59:33 +08:00 via Android
金钱不要用易失存储。
可以缓存累积金额,然后扣款后再回 DB 保存。 每次进行严格对账。 |
4
sujin190 2020-03-19 14:07:40 +08:00
从现实来说,交易只有记账,没有余额账户一说,当前账户余额只是记账的统计快捷缓存结果,消费或者收入就是记账过程,余额变不变无关紧要,所以任何时候只能信任记账流水,记账统计加和与余额不等,那肯定就是余额错了啊,注意处理好精度损失啥的问题,你这是只扣余额不记账么?那么你要被自己坑死了。。
|
5
liprais 2020-03-19 14:08:59 +08:00
用数据库啊想啥呢
|
6
awanganddong OP 现在反思下,我发现我想歪了,完全可以直接订单数据落盘 db,然后 id 放 redis list 里边,然后消费。成功更改订单状态
|