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

查看 450|回复 40
MoYi123   
@zero47 这点数量算什么? 随便一个网络游戏, 一次就加载几千个装备物品, 还不是大把人能做?
pkoukk   
两个表,一个当前的 sum ,一个 detail
通过事件系统,detial 表的变动通知到 sum ,sum 改余额就完事了
而且一天才一两条,不用事件系统,搞定时任务扫都绰绰有余
NizumaEiji   
流水过期
handpr   
类似物流的.出入库. 入库明细-》 spu,sku,批次,效期次,入库数量
Motorola3   
@zero47 有没有一种可能 实际上都是 1
Motorola3   
@deltadawn 有道理
kaedea   
你在查找的是不是:数据库
somebody1   
@deltadawn
补充思路,可以是 32 个 0-9 ,a-z ,这样每天获取到的就可以非常多了,只需要计算一个 32 的字符串,就可以算出来了。
但是缺点有很明显,微信读书可以做到分钟级别的失效,这个就做不到了。
yanliu   
以我浅见,这种余额类的大都是事件溯源的,即你看到的余额不是简单的存储了一个数字,而是由交易记录实时计算出来的,然后定期合并一个快照,减少计算量,那么就可以在交易记录上打标记来实现过期。这是最常用,也是最安全的做法。当然,也有简单的方案,比如将这类会过期的书币存入 redis 的 zset 中,然后将过期时间戳作为 score ,就可以使用 ZRANGEBYSCORE 之类的命令来返回当前时间和过期时间之间的数据,求和就行了。
yanliu   
@yanliu 一切都要看业务。如果你有 15L 说的那样情况,或者其它情况,那么事件溯源,就是这一类问题目前的唯一解,同时兼顾了安全性和灵活性,并且快照设置合适的话,并发性也不差。
您需要登录后才可以回帖 登录 | 立即注册

返回顶部