很多网站都有邀请制。
会为每个用户生成一个邀请码,每个用户的邀请码都不一样。
生成这些邀请码有一个特点:
1.不能重复,若每次生成的时候检查数据库中是否有重复,但影响效率。
2.尽可能短,太长的话不方便用户输入。
3.不能连续,不容易被人猜到。
衍生出的问题是
怎么为一些兑奖应用生成不重复的,尽可能短的,不能被人猜到的兑换码?
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
上次看到一哥们说的京东订单的订单号处理的方式:
每天固定点自动生成N多个(具体多少个基于数据的采集分析)订单号存在nosql数据库中,首先保证了没有重复,然后每次需要使用的时候从这个nosql数据库中取,不需要判断是否重复,以及每次都要重新生成。
具体怎么生成,我能想到的无非也就是
uuid,md5,System.nanotime()。 等别人给你好答案。不能重复就让邀请码的产生和时间戳相关并且在这个基础上加salt,但是在大量连续用户的请求下,小概率事件仍然是可能发生的,并且该种方式或不满足
尽可能短的要求。邀请码
兑奖
其实吧。你不经过数据库你产生的这些东西存在哪?不做重复性检查,设置唯一键就可以了。
直接做成链接好了,也不需要输入邀请码,直接点击就可以,方便,就不存在你说的邀请码太长不方便输入的问题,也不存在你说的被用户猜到邀请码
redis存储 然后生成规则自己定 这样差不多就OK了