为了账号安全,请及时绑定邮箱和手机立即绑定

怎么用Java产生不重复的邀请码?

怎么用Java产生不重复的邀请码?

慕沐林林 2019-03-12 18:15:21
很多网站都有邀请制。会为每个用户生成一个邀请码,每个用户的邀请码都不一样。生成这些邀请码有一个特点:1.不能重复,若每次生成的时候检查数据库中是否有重复,但影响效率。2.尽可能短,太长的话不方便用户输入。3.不能连续,不容易被人猜到。衍生出的问题是怎么为一些兑奖应用生成不重复的,尽可能短的,不能被人猜到的兑换码?
查看完整描述

4 回答

?
临摹微笑

TA贡献1982条经验 获得超2个赞

上次看到一哥们说的京东订单的订单号处理的方式:

  1. 每天固定点自动生成N多个(具体多少个基于数据的采集分析)订单号存在nosql数据库中,首先保证了没有重复,然后每次需要使用的时候从这个nosql数据库中取,不需要判断是否重复,以及每次都要重新生成。

  2. 具体怎么生成,我能想到的无非也就是uuidmd5System.nanotime()。 等别人给你好答案。


查看完整回答
反对 回复 2019-04-23
?
子衿沉夜

TA贡献1828条经验 获得超3个赞

不能重复就让邀请码的产生和时间戳相关并且在这个基础上加salt,但是在大量连续用户的请求下,小概率事件仍然是可能发生的,并且该种方式或不满足尽可能短的要求。

邀请码

邀请码可以通过用户ID和用户唯一的UID产生,比如用户名和手机号,做一次加密产生规则加密串,这个是一次性产生持续使用的,可以做数据库重复检测,并不影响效率。

兑奖

兑奖的码,将码和用户UID绑定,两个条件确定一个内容可以大大降低长度并且不需要重复性要求。

其实吧。你不经过数据库你产生的这些东西存在哪?不做重复性检查,设置唯一键就可以了。


查看完整回答
反对 回复 2019-04-23
?
慕侠2389804

TA贡献1719条经验 获得超6个赞

redis存储 然后生成规则自己定 这样差不多就OK了


查看完整回答
反对 回复 2019-04-23
  • 4 回答
  • 0 关注
  • 2009 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号