(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倍(你可以在群里不停地发红包做回归,记得叫上我去拿红包,哈哈)。
小编推荐阅读《最囧大脑》32关通关攻略技巧指南(打破困境,激活大脑,轻松通关)
阅读深度详解王者荣耀深渊王者段位要求(从细节到实战,解析深渊王者段位升级技巧攻略)
阅读《明日方舟》最强先锋干员推荐指南(打造最强先锋战队,从干员推荐到培养全解析)
阅读《魔兽世界》怀旧服技巧指南大全(挑战圣光的召唤任务,为部落联盟赢取荣誉)
阅读探寻江湖中的宝藏——寻找《烟雨江湖》西子君剑线索的攻略技巧最新(游戏中怎样获得西子君剑线索?)
阅读星露谷物语下水道屏障破解攻略技巧指南(助你轻松突破下水道难关,快速获得丰厚奖励)
阅读《燃烧意志路奇加点攻略技巧指南》(航海王游戏中路奇如何加点,最新推荐汇总)
阅读王者荣耀史诗皮肤卡意思一览大全(探索王者荣耀史诗皮肤的故事,了解背后的涵义)
阅读《重返深渊锁镰》武器攻略大全最新(每把武器攻略,助你通关游戏)
阅读《DNF》游戏牛郎星的光辉快速获得攻略技巧(跨越星际尽享荣耀)
阅读探秘梦幻模拟战手游雾风的技能属性攻略(雾风技能解析,让你成为游戏中的绝佳战士)
阅读怎样选择合适的门派成为《我的侠客》游戏高手?(掌握门派特点,选择最佳武功路线)
阅读