您的位置:首页 > 业内资讯 > 微信红包体系设计分析

微信红包体系设计分析

来源:产品100干货速递 | 时间:2015-09-25 13:59:53 | 阅读:66 |  标签: 产品100干货速递   | 分享到:


(1)用户信息数据表user_info


userID、红包ID、祝福语、红包类型、红包个数、红包金额、超时


(2)用户钱包数据表user_wallet


userID、money、银行卡ID等其他字段


(3)发送红包数据表red_send


红包ID、senderID、红包个数、红包金额、祝福语、最佳手气、发出时间


(4)接收红包数据表red_receive


红包ID、receiver、接收时间、接收金额


4.2随机算法


很多人说红包序列是预先在手机发出去的时候已经产生好随机序列,其实这样会产生大量的数据库读写操作,内存读的速度以DDR3-2400为例,能达到17G/s,写的速度达到18G/s(参考文献:http://m.it168.com/article_1410707_p5.html)。而硬盘数据库的读写速度最多达到133MB/s。可见大量的从硬盘读写数据不但容易使硬盘损坏,更达不到高并发的读写需求。所以预先生成随机序列写入数据库,用户抢的时候再读出红包金额并将用户信息写入数据库并不科学。所以采用内存实时计算随机序列并异步写入硬盘数据库储存的方法。基于内存的随机序列是伪随机序列,他并不是真正的随机,而是根据种子通过一定的算法计算出来的值,只要种子不变,每次计算出来的值的序列是一致的。也就是说当红包指纹(ID或者ID+时间戳或者其他算法生成)一定时,计算出来的序列是一致的,这样子就不用储存在数据库,而是实时计算,第一次取序列的第一个值,第二次取序列的第二个值,如此类推。(更详细的说明可以参考http://www.open-open.com/lib/view/open1430473257443.html)。具体步骤如下(代码以python举例子,没办法知道人家后台用什么语音写的):


以红包ID为种子


>>>red_ID = 1775509988475009


>>>random.seed(red_ID)


群手气红包的最小值为0.01,摇一摇红包的最小值为2.00


>>>min = 1.00


>>>if (红包为群手气红包):


min = 0.01


else(红包为摇一摇红包):


min = 2.00


群手气红包的最大值为剩余红包总额和个数的商的2倍(你可以在群里不停地发红包做回归,记得叫上我去拿红包,哈哈)。

小编推荐阅读

好特网发布此文仅为传递信息,不代表好特网认同期限观点或证实其描述。

相关视频攻略

更多

同类最新

更多

扫二维码进入好特网手机版本!

扫二维码进入好特网微信公众号!

本站所有软件,都由网友上传,如有侵犯你的版权,请发邮件[email protected]

湘ICP备2022002427号-10 湘公网安备:43070202000427号© 2013~2025 haote.com 好特网