微信读书的书币逻辑是怎样做到独立过期的呢?

查看 480|回复 40
zero47
OP
  
@NessajCN 是的,就是觉得这逻辑太重了,在微信读书这种大体量用户下,这个独立过期逻辑有点自己坑自己的意思
NessajCN   
@zero47 不重啊......你自己试一下就知道了,没啥计算量的,也就 IO 多一些。不过这种程度的 IO 相对微信本身那就是毛毛雨了
Rickkkkkkk   
每条领取记录都是库里一条记录
定期跑离线任务去库里把数据都过期掉
算余额会把库里的值全部加起来
这里会出现几个问题:
跑全量任务更新过期会不会太重了? (记录很多, 真正要过期的很少)
每次算余额要把所有的记录加起来会不会慢查询?
(留为作业吧)
Fish1024   
领取的时候就写入了这些币的过期时间,到时间自动过期了。
tomatocici2333   
@Fish1024 我感觉也是 写个定时任务扫描过期
caotian   
之前做一个简单的系统想积分带过期功能,硬着头皮做了类似的方案,基本也实现了需求,结果最后做到退款功能时,还是给整破防了,因为还要考虑退款时退积分,退的积分要根据退款金额计算,退的积分还要保持原来的过期时间,还要考虑退款时,退回的积分有可能已经过期了,过期的积分是直接过期,还是根据规则折算成新积分,感觉本来一个简单的功能越做越复杂,最后索性不做积分过期功能了
deltadawn   
按每月存 1 条记录,初始值为 32 个 0 ,签到的时候把当前天数那一位改成获得的金币数,过期只要把上个月当前天那一位改成 0 ,扣钱的时候,从上个月当天开始循环减。这样数据库操作就少了
jookr   
先进先出呗。
先获取的,先到期/先使用
ashuai   
balance 另有个 detail 表,独立过期时间就行了,不是啥麻烦事
nqlair   
存成 sortedMap ,key 是过期时间,value 是积分,每次登录把过期的删除,积分就是未过期的所有 value 的和,使用时候优先扣过期时间近的
您需要登录后才可以回帖 登录 | 立即注册

返回顶部